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");