Javascript 在nwjs中使用shelljs执行命令?

Javascript 在nwjs中使用shelljs执行命令?,javascript,node.js,shell,nw.js,Javascript,Node.js,Shell,Nw.js,我尝试在nwjs中使用shelljs执行一个简单的命令,如下所示: main.js: var shell = require("shelljs"); var output = shell.exec("bash ./test.sh",{silent:true,async:false}).output; console.log(output); test.sh: echo "Hey there" 当我像这样在nodejs中运行上面的文件时 node main.js 它工作没有任何问题。但是当我

我尝试在nwjs中使用shelljs执行一个简单的命令,如下所示:

main.js:

var shell = require("shelljs");
var output = shell.exec("bash ./test.sh",{silent:true,async:false}).output;
console.log(output);
test.sh:

echo "Hey there"
当我像这样在nodejs中运行上面的文件时

node main.js
它工作没有任何问题。但是当我尝试使用nwjs运行上述代码时(假设我们使用index.html和main.js设置了基本的项目结构),它会给我一个错误

[23874:1031/211359:INFO:CONSOLE(191)] ""shell.js: internal error"", source: node_modules/shelljs/src/common.js (191)
[23874:1031/211359:INFO:CONSOLE(192)] ""Error: ENOENT: no such file or directory, open '/tmp/shelljs_b656f0ddaa7c3b096e97'\n    at Error (native)\n    at Object.fs.openSync (fs.js:540:18)\n    at Object.fs.readFileSync (fs.js:392:15)\n    at execSync (node_modules/shelljs/src/exec.js:109:24)\n    at Object._exec (node_modules/shelljs/src/exec.js:214:12)\n    at Object.exec (node_modules/shelljs/src/common.js:182:23)\n    at file://main.js:33:16"", source: node_modules/shelljs/src/common.js (192)
我只是想知道是否有任何解决方法或解决方案来执行代码。谢谢你的帮助


谢谢。

使用完整路径测试。sh:

var shell = require("shelljs");
var output = shell.exec("bash /path/to/test.sh",{silent:true,async:false}).output;
console.log(output);
看起来像是在:/tmp/shelljs_b656f0ddaa7c3b096e97中搜索shelljs文件 你把test.sh放在哪里?nwjs附近?如何运行代码?来自devtools?来自项目?从打包项目

还有,为什么需要shelljs?Nwjs已经有内部API可用于shell:

var nwGui = require('nw.gui')
    , nwShell = nwGui.Shell
    , child_process = require('child_process')
    , exec = child_process.exec
    , execSync = child_process.execSync
    , execFile = child_process.execFile
    , execFileSync = child_process.execFileSync
;

var output = execSync("bash /path/to/test.sh");
console.log(output);

shelljs似乎找不到文件,请尝试运行ls这样的全局命令好吗?为了看看问题是否发生了?@alex rokabilis,我尝试了全局选项,这也给出了一个错误,我甚至在electron上下文中尝试了它,而不是nwjs,但这也不起作用。奇怪的是,child_process.execSync可以工作,但实际上不行。test.js与main.js位于同一目录中。我使用shelljs,因为它的API易于使用。不仅如此,正如你所说,我还通过给出完整的路径来解决问题。出于某种原因,nw.js没有考虑项目文件夹……所以我不得不使用完整路径。谢谢你的帮助。