使用nwjs中的shelljs执行命令?

时间:2015-11-01 01:45:57

标签: 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运行上面的代码时(假设我们使用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)

我只是想知道是否有任何解决方法或解决方案来执行代码。感谢帮助。

谢谢。

1 个答案:

答案 0 :(得分:3)

使用test.sh的完整路径:

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

看起来像shelljs搜索文件:/ tmp / shelljs_b656f0ddaa7c3b096e97 你放置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);

https://github.com/nwjs/nw.js/wiki/shell