【问题标题】:spawn ENOENT error in windows while running execFile (node js)运行 execFile(节点 js)时在 Windows 中产生 ENOENT 错误
【发布时间】:2022-08-22 19:50:36
【问题描述】:

我正在尝试使用 node.js 中的子进程运行 C 文件。我使用 execFile 来执行此操作,\'test\' 文件位于同一文件夹中。相同的程序在 linux 上运行并提供输出,但不在 windows 上运行。它在 Windows 上显示 error: spawn ./test ENONET。我该怎么办?

const { execFile } = require(\'child_process\')
execFile(\'./test\', (error, stdout, stderr) => {
if(error) {
    console.log(`error: ${error.message}`)
    return
}
if(stderr) {
    console.log(`stderr: ${stderr}`)
}
console.log(`stdout: ${stdout}`) })

编辑:我尝试使用位于同一目录中的此文件 \'somefile.sh\'

#!/bin/bash
//ls -lh //for linux
-dir //for windows

表明

Error: spawn UNKNOWN
←[90m    at ChildProcess.spawn (internal/child_process.js:403:11)←[39m
←[90m    at spawn (child_process.js:553:9)←[39m
←[90m    at execFile (child_process.js:237:17)←[39m
    at Object.<anonymous> (C:\\Users\\Dell\\Desktop\\Projects\\childprocess\\exec_file.js:6:1)
←[90m    at Module._compile (internal/modules/cjs/loader.js:1063:30)←[39m
←[90m    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)←[39m
←[90m    at Module.load (internal/modules/cjs/loader.js:928:32)←[39m
←[90m    at Function.Module._load (internal/modules/cjs/loader.js:769:14)←[39m
←[90m    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)←[39m
←[90m    at internal/main/run_main_module.js:17:47←[39m {
  errno: ←[33m-4094←[39m,
  code: ←[32m\'UNKNOWN\'←[39m,
  syscall: ←[32m\'spawn\'←[39m
}

我还尝试使用单个命令执行 exec,它提供了以下代码的输出。

    const {exec} = require(\'child_process\')

exec(\'pwd\', (error, stdout, stderr) => {
    if(error) {
        console.log(`error: ${error.message}`)
        return
    }
    if(stderr) {
        console.log(`stderr: ${stderr}`)
    }
    console.log(`stdout: ${stdout}`)
})

输出显示当前的工作目录。 这是我参考的教程:https://www.youtube.com/watch?v=bbmFvCbVDqo&t=441s

  • 你的节点和编译的c文件在同一个目录下吗?文件有扩展名吗?例如.exe?您是否尝试过使用文件扩展名?
  • 是的,同一个目录。但该文件最初没有扩展名。当我以 \'./test.c\' 和 \'./test.exe\' 运行它时,它仍然显示相同的错误。
  • 你可以添加我可以自己尝试的c源或简单的c dummy吗?你用child_process module, like exec`的其他方法试过了吗?
  • 是的,我尝试过 exec 并给出了 pwd 命令,它适用于 exec 但不适用于 execfile。我在编辑中添加了示例代码。

标签: node.js child-process execfile


【解决方案1】:

我也遇到了这个问题

internal/child_process.js:403
    throw errnoException(err, 'spawn');
    ^

Error: spawn UNKNOWN
    at ChildProcess.spawn (internal/child_process.js:403:11)
    at spawn (child_process.js:553:9)
    at execFile (child_process.js:237:17)
    at Object.<anonymous> (E:\common\kefu-workbench-electron\scripts\build-test.js:8:1)
    at Module._compile (internal/modules/cjs/loader.js:1063:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1092:10)
    at Module.load (internal/modules/cjs/loader.js:928:32)
    at Function.Module._load (internal/modules/cjs/loader.js:769:14)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:72:12)
    at internal/main/run_main_module.js:17:47 {
  errno: -4094,
  code: 'UNKNOWN',
  syscall: 'spawn'
}

【讨论】:

    猜你喜欢
    • 2014-11-08
    • 2013-09-21
    • 2013-04-19
    • 2012-02-21
    • 2016-01-17
    • 2018-10-31
    • 2020-07-11
    • 1970-01-01
    • 2018-01-21
    相关资源
    最近更新 更多