簡體   English   中英

單節點腳本順序運行多個節點腳本

[英]Single Node script to run multiple Node scripts sequentially

我有多個需要按特定順序執行的 Node.js 腳本(例如:script1.js、script2.js、script3.js 等)。

我正在嘗試擁有一個“主”(可以這么說)節點腳本,它將列出這些文件的執行順序(例如:script1.js -> script2.js -> script3.js 等等)。 PS - script1.js 必須在 script2.js 啟動之前完成執行,依此類推。

我嘗試使用“child_process”執行單個 Node 腳本並且它工作正常,需要多個文件和特定順序的幫助。

提前致謝!

您必須在 package.json 文件中設置您的父 Js 文件。

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

然后根據您想要的輸出將您的子組件放入 app.js 文件中。

創建一個文件,命名為 index.js

使用 index.js 導入或需要其他文件

實際上,我使用 express-enrouten 對 express js 中的所有路由執行此操作。

 //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()
 }

如果您沒有在文件中執行任何異步操作,則會按順序加載。 否則,創建另一個文件並在其中調用異步函數。

// 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();
}

為了以特定的順序輕松運行多個腳本,您應該將所有命令放入 package.json 中的“腳本”部分。 那么你只需要在終端中運行一個命令來實現它。

前任:
首先,打開 package.json:

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

第二:打開終端並輸入

npm 運行 runall

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM