我试图获取以下代码,这些代码应该在OSX和Windows中执行shell命令。
const exec = require("child_process").exec;
const runCommand = (cmd) => exec(cmd,
function (error, stdout, stderr) {
if (stdout.length > 0) {
console.log(stdout);
}
});
对于以下runCommand("./node_modules/.bin/someBinary")
,它在Windows中不起作用。但它在OSX中运行良好。所以我想知道在Windows中运行它需要哪些修改?
答案 0 :(得分:0)
您是否考虑过尝试npm-exec?
加载与npm run-script相同的环境,但执行任意bash命令行。 (甚至在窗户上!感谢害羞)。这包括修改$ PATH,以便在全局模块之前使用node_modules / .bin中的脚本。
所以你可以npm-exec someBinary
而不是使用打破Windows / OSX兼容性的相对路径
如果此模块不适合您,您也可以按照this answer中的说明尝试npm bin
。
答案 1 :(得分:0)
好的,所以最后我通过检查我所在的平台来解决它,反过来我只是用特定的操作系统编写了相同的命令,所以它会运行。
简而言之,我使用process.platform
找出它是哪个操作系统。不是最优雅的。但至少它解决了我的问题。