首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >exec与execFile nodeJs

exec与execFile nodeJs
EN

Stack Overflow用户
提问于 2017-09-27 18:42:00
回答 3查看 8.9K关注 0票数 8

我想使用nodejs在命令提示符中运行命令。

基于https://dzone.com/articles/understanding-execfile-spawn-exec-and-fork-in-node,我使用了

代码语言:javascript
复制
child_process.execFile('protractor', ['./src/convertedJs/tempProtractorconfig.js'], (err, stdout, stderr) => {}

上面的代码抛出了一个ENOENT错误。

但是当我跑的时候

代码语言:javascript
复制
child_process.exec('protractor ./src/convertedJs/tempProtractorconfig.js', (err,stdout,stderr) => {}`

一切都很好。

有人能解释一下发生了什么吗?

EN

回答 3

Stack Overflow用户

发布于 2019-08-06 00:01:23

使用child_process.exec()和child_process.execFile()之间的区别在于后者不会产生外壳,而前者会。

Nodejs documentation状态:

但是,.bat和.cmd文件在没有终端的情况下不能单独执行,因此不能使用child_process.execFile()启动。在Windows上运行时,可以使用带有外壳选项集的child_process.spawn()调用.bat和.cmd文件,使用child_process.exec(),或者生成cmd.exe并将.bat或.cmd文件作为参数传递(这就是外壳选项和child_process.exec()所做的事情)。

我可以发射它们。但也不是没有问题。

我的观察:

运行以下shell的

  • 在Linux上运行,而child_process.execFile('dir', ...)不能在Windows上运行variable.

的完整路径,例如,child_process.execFile('C:\\Users\\Jperl\\AppData\\Roaming\\npm\\protractor.cmd', ...)按预期运行!No child_process.execFile('ls', ...)表示我们没有访问路径shell的权限

根本不要使用execFile for Windows。请改用spawnexec

代码语言:javascript
复制
var protractor = child_process.spawn('protractor', ['./src/convertedJs/tempProtractorconfig.js'], {shell: true});

代码语言:javascript
复制
var protractor = child_process.spawn('cmd', ['/c', 'protractor', './src/convertedJs/tempProtractorconfig.js']);
票数 10
EN

Stack Overflow用户

发布于 2018-03-02 15:14:09

在nodejs v9.5.0中,exec在lib/child_process.js文件中定义如下

代码语言:javascript
复制
exports.exec = function(command /*, options, callback*/) {
var opts = normalizeExecArgs.apply(null, arguments);
return exports.execFile(opts.file, opts.options, opts.callback);

};

这意味着,最后exec调用execFile来执行您的命令,所以在您的例子中,execFile失败而exec没有失败就很奇怪了

票数 0
EN

Stack Overflow用户

发布于 2021-12-01 03:48:04

我在使用"node myfile.js“启动一个节点进程时也遇到了一些问题,但是当我添加node.exe的位置,比如'path of node.exe/node.exe myfile.js‘时,它就像我预期的那样工作得很好

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46445805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档