【问题标题】:Nodejs spawn script.exe ENOENTNodejs spawn script.exe ENOENT
【发布时间】:2021-06-30 07:58:56
【问题描述】:

我在电子应用程序中运行 exe 时出错。路径是正确的,但仍然通过错误。

    Uncaught Error: spawn exe/0c8c86d42f4a8d77842972cdde6eb634.exe ENOENT
        at Process.ChildProcess._handle.onexit (internal/child_process.js:267)
        at onErrorNT (internal/child_process.js:469)
        at processTicksAndRejections (internal/process/task_queues.js:84)

这是我的代码:

const executable = execFile(
  'script.exe',
  parameter,
  {
    cwd: 'D:/My Data/VS Code/ReactJS/FrontEND/CrownAIO/src/app/components/task/Scripts',
  },
  (error: any, stdout: any, stderr: any) => {
    if (error) {
      console.error('stderr', stderr);
      throw error;
    }
    console.log('stdout', stdout);
  }
);

为什么execFile 会抛出错误? 如何在 NodeJS 中正确运行带 args 的可执行文件?

【问题讨论】:

    标签: node.js typescript electron ipc electron-forge


    【解决方案1】:

    将一个可执行文件添加到您的文件script.exe,然后希望您的parameter var 是一个数组。请参阅 nodejs 文档https://nodejs.org/dist/latest-v14.x/docs/api/child_process.html#child_process_child_process_execfile_file_args_options_callback

    例如,如果我使用 execFile 方法运行 bash 脚本,我会这样做:

    execFile('bash', ['test.sh'], { cwd: '.' }, 
        (err, stdout, stderr) => {
            console.log(stdout)
        }
    )
    

    另一个例子,运行一个 nodejs 程序

    execFile('node', ['test.js'], { cwd: '.' }, 
            (err, stdout, stderr) => {
                console.log(stdout)
            }
        )
    

    请注意,这里的 cwd 选项是无用的,因为它是默认设置的。

    【讨论】:

    • 它不工作..错误:spawn script.exe ENOENT
    • 你能从终端执行你的文件吗?你能用包含可执行文件的命令更新你的帖子吗?
    • 还要确保你的路径是正确构建的,因为 ENOENT 表示没有找到文件。你可以这样做 cont pt = require('path').normalize('D:/My Data........') 并传递 pt has cwd
    • 它发出的路径。我解决了.. 但是我怎样才能用空格传递参数.. @Jerome
    • 每个用空格分隔的元素(当然可执行文件除外)应该是数组的一个元素,例如: vim -u NONE file.ext 应该是 execFile('vim', ['- u', 'NONE', 'test.txt'], .......
    猜你喜欢
    • 2018-12-20
    • 1970-01-01
    • 2013-07-05
    • 2019-06-27
    • 2015-11-20
    • 1970-01-01
    • 2014-11-13
    • 2015-12-15
    • 2016-10-02
    相关资源
    最近更新 更多