[英]How to run multiple WSL commands from a Windows NodeJS process?
[英]Run multiple windows commands from nodejs
當我的 windows 服務器收到一個 post 請求時,我需要它來執行一個命令:
cd D:\project
git pull
mvn clean compile
cd target
java -jar app.jar -argument
我寫了代碼,但它不起作用:
const nodeCmd = require('node-cmd')
app.post((req, res) => {
let command = `cd D:\project\my_project
git pull
mvn clean compile
cd target
java -jar app.jar ${req.body.arg}`;
nodeCmd.get(command, (err, data, stderr) => {
if(data) {
return res.json(data);
}
return err;
});
})
這是錯誤消息:
{ Error: Command failed: cd D:projectmy_project && dir
The system cannot find the path specified.
at ChildProcess.exithandler (child_process.js:294:12)
at ChildProcess.emit (events.js:198:13)
at maybeClose (internal/child_process.js:982:16)
at Process.ChildProcess._handle.onexit (internal/child_process.js:259:5)
killed: false,
code: 1,
signal: null,
cmd: 'cd D:Tempautobooker && dir' }
我對在 Windows 中運行此類任務了解不多,但我懷疑您可能需要將它們分解為多個調用或它們之間的&&
。
命令字符串中的反斜杠不會被轉義。 您可以使用string.raw
來指示 JS 引擎將模板文字視為原始字符串。
let command = String.raw`cd D:\project\my_project
git pull
mvn clean compile
cd target
java -jar app.jar ${req.body.arg}`;
根據node-cmd
文檔,您的代碼是完美的,但我認為您的問題在於您的項目路徑,這意味着您的第一個命令未執行,這是因為您的反斜杠沒有轉義,根據您的錯誤消息,您的路徑是projectmy_project
哪個不正確,您需要將路徑更新為這樣D:\\project\\my_project
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.