如何提供路径 child_process.spawn
例如路径:
c:\users\marco\my documents\project\someexecutable
路径由最终用户从配置文件提供.
var child_process = require('child_process');
var path = require('path');
var pathToExecute = path.join(options.toolsPath, 'mspec.exe');
child_process.spawn(pathToExecute, options.args);
Run Code Online (Sandbox Code Playgroud)
目前只有空间使用后的部分 child_process.spawn
我还尝试在路径中添加引号,如下所示:
var child_process = require('child_process');
var path = require('path');
var pathToExecute = path.join(options.toolsPath, 'mspec.exe');
child_process.spawn('"' + pathToExecute + '"', options.args);
Run Code Online (Sandbox Code Playgroud)
但是这会导致ENOENT错误.
根据https://github.com/nodejs/node/issues/7367#issuecomment-229728704,可以使用该{ shell: true }选项。
例如
const { spawn } = require('child_process');
const ls = spawn(process.env.comspec, ['/c', 'dir /b "C:\\users\\Trevor\\Documents\\Adobe Scripts"'], { shell: true });
Run Code Online (Sandbox Code Playgroud)
将工作。
第一个参数必须是命令名称,而不是可执行文件的完整路径。有一个选项可以cwd用来指定进程的工作目录,您还可以确保可执行文件可以访问并将其添加到PATH变量中(可能更容易执行)。
另外,args传递给的数组spawn不应包含空元素。
您的代码应如下所示:
child_process.spawn('mspec.exe', options.args, {cwd: '...'});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2927 次 |
| 最近记录: |