Сценарий с одним узлом для последовательного запуска сценариев с несколькими узлами

#javascript #node.js

#javascript #node.js

Вопрос:

У меня есть несколько Node.js сценарии (например: script1.js , script2.js , script3.js и т.д.), Которые должны выполняться в определенной последовательности.

Я пытаюсь иметь «мастер» (так сказать) Скрипт узла, который установит порядок выполнения этих файлов (например: script1.js -> script2.js -> script3.js и так далее). P.S — script1.js должен завершить выполнение до script2.js может запускаться и так далее.

Я попытался выполнить скрипт с одним узлом, используя «child_process», и это сработало, нужна помощь с несколькими файлами и в определенной последовательности.

Заранее спасибо!

Ответ №1:

Вы должны установить свой родительский файл Js в файл package.json.

 "scripts": {
    "test": "echo "Error: no test specified" amp;amp; exit 1",
    "start": "nodemon app.js"
  }
  

А затем поместите свои дочерние компоненты в app.js файл в соответствии с выводом, который вы хотите.

Ответ №2:

Создайте один файл, вызовите его index.js

использование index.js для импорта или запроса других файлов

на самом деле я делаю это со всеми своими маршрутами в express js, используя express-enrouten.

  //index.js
 require('folder/one.js');
 require('folder/two.js');

 //folder/one.js -> express route format but you can be as creative as you want
 module.exports = function(req, res, next){
   //do some things

   //Go to next script
   next()
 }
  

Комментарии:

1. вы можете просто использовать promises и создать своего рода цепочку if then

Ответ №3:

Если вы не выполняете никаких асинхронных операций в файле, он загружается последовательно. в противном случае создайте другой файл и вызовите в нем функцию async.

 // script1.js
module.export.script1 = async () => {
    // some async code 
}

// script2.js
module.export.script2 = async () => {
    // some async code 
}

// script3.js
module.export.script3 = async () => {
    // some async code 
}

// index.js
const script1 = require('./script1.js');
const script2 = require('./script2.js');
const script3 = require('./script3.js');

async function name(params) {
    await script1();
    await script2();
    await script3();
}
  

Ответ №4:

Чтобы упростить запуск нескольких сценариев в определенной последовательности, вы должны поместить все команды в package.json в разделе «скрипты» в этой последовательности. затем вам просто нужно запустить одну команду в терминале, чтобы достичь этого.

ПРИМЕР:
Сначала откройте package.json:

 "scripts": {
    // ... some other scripts ...
    "runall": "node script1.js [params] amp;amp; node script2.js [params] amp;amp; node script3.js [params]]" // params is optional
  }
  

Второй: откройте терминал и введите

npm run runall