Javascript RangeError ChildProcess:超出了stderr maxBuffer长度

Javascript RangeError ChildProcess:超出了stderr maxBuffer长度,javascript,Javascript,我正在尝试使用.exec()方法执行批处理文件 const { exec } = require("child_process"); exec('"./Something/Requests/run.bat"', { maxBuffer: 1024 * 500 }, function (error) { if (error) { console.log(error);

我正在尝试使用
.exec()
方法执行批处理
文件

const { exec } = require("child_process");

exec('"./Something/Requests/run.bat"', { maxBuffer: 1024 * 500 }, function (error) {
                if (error) {
                    console.log(error);
                }
            })
错误输出:

RangeError[ERR\u CHILD\u PROCESS\u STDIO\u MAXBUFFER]:超出了stderr MAXBUFFER长度
在Socket.onChildDerr(child_process.js:386:14)
在Socket.emit(events.js:315:20)
在addChunk(_stream_readable.js:295:12)
在readableAddChunk(_stream_readable.js:267:11)
在Socket.Readable.push(_stream_Readable.js:212:10)
管道上游(内部/河流底部公共空间:186:23){
代码:“ERR\u CHILD\u PROCESS\u STDIO\u MAXBUFFER”,
cmd:“'/Something/Requests/run.bat”'
}
是否有其他方法执行批处理文件?我尝试了类似
.json
的文件类型,它用记事本打开了文件

编辑:

尝试使用
execSync()

execSync(“”/Something/Requests/run.bat“,{stdio:“ignore”})

错误

readline.js:1159
            throw err;
            ^

<ref *1> Error: spawnSync C:\WINDOWS\system32\cmd.exe ENOBUFS
    at Object.spawnSync (internal/child_process.js:1074:20)
    at spawnSync (child_process.js:626:24)
    at execSync (child_process.js:671:15)
    at C:\Users\Familia\OneDrive\Documents\Other Stuff\Visual Studio code\SomethingBots\Testing\Something\Something\index.js:89:13
    at Interface._onLine (readline.js:340:5)
    at Interface._line (readline.js:671:8)
    at Interface._ttyWrite (readline.js:1015:14)
    at ReadStream.onkeypress (readline.js:213:10)
    at ReadStream.emit (events.js:376:20)
    at emitKeys (internal/readline/utils.js:345:14) {
  errno: -4060,
  code: 'ENOBUFS',
  syscall: 'spawnSync C:\\WINDOWS\\system32\\cmd.exe',
  path: 'C:\\WINDOWS\\system32\\cmd.exe',
  spawnargs: [ '/d', '/s', '/c', '""./Nuking/Requests/run.bat""' ],
  error: [Circular *1],
  status: null,
  signal: 'SIGTERM',
  output: [
    null,
    Buffer(943) [Uint8Array] [
      12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
      12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
      12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
      12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
      12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
      12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
      12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
      12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
      12, 12, 12, 12,
      ... 843 more items
    ],
    Buffer(511106) [Uint8Array] [
      105, 110, 116, 101, 114, 110,  97, 108,  47, 109, 111, 100,
      117, 108, 101, 115,  47,  99, 106, 115,  47, 108, 111,  97,
      100, 101, 114,  46, 106, 115,  58,  56,  56,  56,  13,  10,
       32,  32, 116, 104, 114, 111, 119,  32, 101, 114, 114,  59,
       13,  10,  32,  32,  94,  13,  10,  13,  10,  69, 114, 114,
      111, 114,  58,  32,  67,  97, 110, 110, 111, 116,  32, 102,
      105, 110, 100,  32, 109, 111, 100, 117, 108, 101,  32,  39,
       67,  58,  92,  85, 115, 101, 114, 115,  92,  70,  97, 109,
      105, 108, 105,  97,
      ... 511006 more items
    ]
  ],
  pid: 10828,
  stdout: Buffer(943) [Uint8Array] [
    12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
    12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
    12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
    12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
    12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
    12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
    12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
    12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
    12, 12, 12, 12,
    ... 843 more items
  ],
  stderr: Buffer(511106) [Uint8Array] [
    105, 110, 116, 101, 114, 110,  97, 108,  47, 109, 111, 100,
    117, 108, 101, 115,  47,  99, 106, 115,  47, 108, 111,  97,
    100, 101, 114,  46, 106, 115,  58,  56,  56,  56,  13,  10,
     32,  32, 116, 104, 114, 111, 119,  32, 101, 114, 114,  59,
     13,  10,  32,  32,  94,  13,  10,  13,  10,  69, 114, 114,
    111, 114,  58,  32,  67,  97, 110, 110, 111, 116,  32, 102,
    105, 110, 100,  32, 109, 111, 100, 117, 108, 101,  32,  39,
     67,  58,  92,  85, 115, 101, 114, 115,  92,  70,  97, 109,
    105, 108, 105,  97,
    ... 511006 more items
  ]
}
readline.js:1159
犯错误;
^
错误:spawnSync:\WINDOWS\system32\cmd.exe ENOBUFS
在Object.spawnSync(internal/child_process.js:1074:20)
在spawnSync(child_process.js:626:24)
在execSync(child_process.js:671:15)
在C:\Users\Familia\OneDrive\Documents\Other Stuff\visualstudio code\SomethingBots\Testing\Something\Something\index.js:89:13
在线(readline.js:340:5)
在接口处。\u行(readline.js:671:8)
在接口处编写(readline.js:1015:14)
在ReadStream.onkeypress(readline.js:213:10)
在ReadStream.emit(events.js:376:20)
at-emitKeys(internal/readline/utils.js:345:14){
errno:-4060,
代码:“ENOBUFS”,
syscall:'spawnSync:\\WINDOWS\\system32\\cmd.exe',
路径:“C:\\WINDOWS\\system32\\cmd.exe”,
spawnargs:['/d'、'/s'、'/c'、''''''.''。/Nuking/Requests/run.bat'.],
错误:[循环*1],
状态:空,
信号:“SIGTERM”,
输出:[
无效的
缓冲区(943)[Uint8Array][
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12,
…843个项目
],
缓冲区(511106)[Uint8Array][
105, 110, 116, 101, 114, 110,  97, 108,  47, 109, 111, 100,
117, 108, 101, 115,  47,  99, 106, 115,  47, 108, 111,  97,
100, 101, 114,  46, 106, 115,  58,  56,  56,  56,  13,  10,
32,  32, 116, 104, 114, 111, 119,  32, 101, 114, 114,  59,
13,  10,  32,  32,  94,  13,  10,  13,  10,  69, 114, 114,
111, 114,  58,  32,  67,  97, 110, 110, 111, 116,  32, 102,
105, 110, 100,  32, 109, 111, 100, 117, 108, 101,  32,  39,
67,  58,  92,  85, 115, 101, 114, 115,  92,  70,  97, 109,
105, 108, 105,  97,
…511006项以上
]
],
pid:10828,
标准输出:缓冲区(943)[Uint8Array][
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12,
12, 12, 12, 12,
…843个项目
],
stderr:Buffer(511106)[Uint8Array][
105, 110, 116, 101, 114, 110,  97, 108,  47, 109, 111, 100,
117, 108, 101, 115,  47,  99, 106, 115,  47, 108, 111,  97,
100, 101, 114,  46, 106, 115,  58,  56,  56,  56,  13,  10,
32,  32, 116, 104, 114, 111, 119,  32, 101, 114, 114,  59,
13,  10,  32,  32,  94,  13,  10,  13,  10,  69, 114, 114,
111, 114,  58,  32,  67,  97, 110, 110, 111, 116,  32, 102,
105, 110, 100,  32, 109, 111, 100, 117, 108, 101,  32,  39,
67,  58,  92,  85, 115, 101, 114, 115,  92,  70,  97, 109,
105, 108, 105,  97,
…511006项以上
]
}

此错误之后是一系列垃圾邮件错误,如
错误:找不到模块'C:\THE\PATH\Something\run.bat'
。尽管在代码中明确声明要在中查找:
/Something/Requests/run.bat
(您可以在上面看到)。这就给我留下了另一个问题,那就是为什么它正在查看一个我没有告诉它要查看的目录?

我注意到错误日志中的这部分
stderr maxBuffer length超出了

批处理脚本在标准错误中生成大量内容,并超出了限制。我建议:

  • 尝试手动运行批处理脚本以查看是否存在错误
  • 如果批处理脚本运行正常,则可能是权限问题。确保您具有从NodeJS应用程序运行批处理脚本的正确权限
  • 您可以尝试使用execSync并忽略标准错误

您是否尝试过增加
{maxBuffer:1024*500}
?目前是500KB。可能是您试图打开的文件超出了此限制。我的批处理文件和我的JSON文件的大小相同。我能够执行的
JSON
文件的总大小为:
197字节
,而
batch
文件包含:
81字节(81字节)
我已将运行脚本的权限更改为“所有人”但它仍然无法打开或执行批处理文件。是否有其他方法设置权限以允许NodeJS运行批处理文件?请检查我编辑的问题中给出的错误。
execSync('./Something/Requests/run.bat' , {stdio: "ignore");