nodejs child process - Error: spawn node ENOENT
nodejs child process - Error: spawn node ENOENT
我正在使用此代码尝试生成一个需要 运行 脚本的子进程。
const child = require('child_process').spawn;
const path = require('path');
const script = path.format({dir: __dirname, base: 'myscript.js'});
child('node', [script], {
cwd: __dirname,
env: {
TEST_USERNAME: 'myuser',
TEST_PASSWORD: 'mypassword'
}
}).on('error', (error) => {
console.log(error);
});
当我尝试 运行 我的 index.js
脚本时出现此错误
Error: spawn node ENOENT
at Process.ChildProcess._handle.onexit (node:internal/child_process:276:19)
at onErrorNT (node:internal/child_process:476:16)
at processTicksAndRejections (node:internal/process/task_queues:80:21) {
errno: -2,
code: 'ENOENT',
syscall: 'spawn node',
path: 'node',
spawnargs: [ '/Users/dev/Desktop/cli-training/demo.js' ]
}
更新
我正在尝试 运行 子脚本,然后 inquirer.js
向用户提示了一些问题。这可能是问题所在吗?我注意到子进程将不会执行。在我的子脚本中我有这个代码
const { IgApiClient } = require('instagram-private-api');
const chalk = require('chalk');
console.log(chalk.magenta('Starting child script'));
const ig = new IgApiClient();
console.log(process.argv);
我该如何解决?
如果你想在子进程中执行节点二进制文件,最好参考它的完整路径,你可以用process.execPath
找到它
这应该可以解决您的问题
child(process.execPath, [script], {
cwd: __dirname,
env: {
TEST_USERNAME: 'myuser',
TEST_PASSWORD: 'mypassword'
}
}).on('error', (error) => {
console.log(error);
});
我正在使用此代码尝试生成一个需要 运行 脚本的子进程。
const child = require('child_process').spawn;
const path = require('path');
const script = path.format({dir: __dirname, base: 'myscript.js'});
child('node', [script], {
cwd: __dirname,
env: {
TEST_USERNAME: 'myuser',
TEST_PASSWORD: 'mypassword'
}
}).on('error', (error) => {
console.log(error);
});
当我尝试 运行 我的 index.js
脚本时出现此错误
Error: spawn node ENOENT
at Process.ChildProcess._handle.onexit (node:internal/child_process:276:19)
at onErrorNT (node:internal/child_process:476:16)
at processTicksAndRejections (node:internal/process/task_queues:80:21) {
errno: -2,
code: 'ENOENT',
syscall: 'spawn node',
path: 'node',
spawnargs: [ '/Users/dev/Desktop/cli-training/demo.js' ]
}
更新
我正在尝试 运行 子脚本,然后 inquirer.js
向用户提示了一些问题。这可能是问题所在吗?我注意到子进程将不会执行。在我的子脚本中我有这个代码
const { IgApiClient } = require('instagram-private-api');
const chalk = require('chalk');
console.log(chalk.magenta('Starting child script'));
const ig = new IgApiClient();
console.log(process.argv);
我该如何解决?
如果你想在子进程中执行节点二进制文件,最好参考它的完整路径,你可以用process.execPath
这应该可以解决您的问题
child(process.execPath, [script], {
cwd: __dirname,
env: {
TEST_USERNAME: 'myuser',
TEST_PASSWORD: 'mypassword'
}
}).on('error', (error) => {
console.log(error);
});