我在运行子进程并将其输出写入控制台时遇到了很多麻烦。在这一集中,我尝试使用spawn
来运行一个 windowsmklink
命令。错误是我没有写入文件的权限。
但是,我的问题是错误没有以任何方式告诉我。
以下打印You do not have sufficient privilege to perform this operation.
到控制台:
mklink /D C:\some\path\to\my\intended\link C:\path\to\my\folder
但是在 node.js 中运行它只会给我Error: spawn ENOENT
- 这是一个非常无用的错误消息:
require('child_process').spawn('mklink',
['/D', 'C:\\some\\path\\to\\my\\intended\\link',
'C:\\path\\to\\my\\folder'],
{stdio:'inherit'})
尽管有 stdio:'inherit',但我在控制台上什么也得不到。我还尝试了以下方法:
var x = require('child_process').spawn('mklink',
['/D', 'C:\\some\\path\\to\\my\\intended\\link',
'C:\\path\\to\\my\\folder'])
x.stdout.pipe(process.stdout)
x.stderr.pipe(process.stderr)
但没有骰子。根本没有控制台输出。请注意,我确实获得了控制台输出exec
:
var x = require('child_process')
.exec('mklink /D C:\\some\\path\\to\\my\\intended\\link C:\\path\\to\\my\\folder')
x.stdout.pipe(process.stdout)
x.stderr.pipe(process.stderr)
这不需要任何有关 windows mklink 如何工作的特殊知识 - 我的问题只是使用 node.js 进行错误报告spawn
。
我在这里做错了什么?这是 node.js 中的错误吗?
更新:节点 v0.10.29 似乎已修复此错误