[英]Executing a python script from NodeJS
我正在嘗試使用此處解釋的子進程核心模塊從 node.js 應用程序執行機器學習腳本
但是,我無法從 script.stdout.on 獲得簡單的輸出。
我正在使用 Node v12.5.0 和 python 3.7.3
我制作了一個示例“hello world”腳本和 JS 函數來測試(如下所示),並從命令行運行腳本就好了。
這些是我的腳本:
測試文件
import sys
print('hello world')
sys.stdout.flush()
JavaScript 測試功能
const { spawn } = require("child_process");
const pytest = spawn("python", ["./path/to/test.py"]);
console.log("firstPrint");
pytest.stdout.on("data", data => {
console.log("secondPrint");
console.log(data);
});
pytest.stdout.on("close", code => {
console.log(`script closed: ${code}`);
});
我的控制台輸出是:
firstPrint
script closed: false
雖然它應該是:
firstPrint
secondPrint
hello world
script closed: {code}
最終對我來說是什么問題:
正如@dfsq 所建議的,我添加了一個 pytest.stderr.on 回調並收到“無法打開文件”錯誤。
Node 總是從項目的根文件夾執行“spawn”命令,所以在我的例子中,即使執行“spawn”命令的腳本在 /src 中,我也必須手動將“./src”添加到路徑中。
執行JS函數的腳本在/src里面
舊路徑(不起作用):“./test.py”
新路徑(有效):“./src/test.py”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.