Angularjs 生成命令在electron应用程序中不起作用
我试图在Electron中使用AngularJS使用spawn运行一个命令,我得到了一个错误Angularjs 生成命令在electron应用程序中不起作用,angularjs,node.js,electron,spawn,Angularjs,Node.js,Electron,Spawn,我试图在Electron中使用AngularJS使用spawn运行一个命令,我得到了一个错误 events.js:183 Uncaught Error: spawn dita ENOENT at _errnoException (util.js:1024) at Process.ChildProcess._handle.onexit (internal/child_process.js:190) at onErrorNT (internal/child_process.j
events.js:183 Uncaught Error: spawn dita ENOENT
at _errnoException (util.js:1024)
at Process.ChildProcess._handle.onexit (internal/child_process.js:190)
at onErrorNT (internal/child_process.js:372)
at _combinedTickCallback (internal/process/next_tick.js:138)
at process._tickCallback (internal/process/next_tick.js:180)
_errnoException @ util.js:1024
ChildProcess._handle.onexit @ internal/child_process.js:190
onErrorNT @ internal/child_process.js:372
_combinedTickCallback @ internal/process/next_tick.js:138
_tickCallback @ internal/process/next_tick.js:180
这是我的生成命令:-
spawn('dita',
['--input=C:\Users\aaa\Desktop\ditamaps\mobile-phone\mobilePhone.ditamap', '--output=C:\Users\aaa\Desktop', '--format=pdf'],
{
cwd: $scope.ditaPath + "\\bin"
}, function(error, stdout, stderr) {
// work with result
console.log(stdout);
console.log(stderr);
console.log(error);
});
当我手动运行相同的批处理代码时,它工作正常。
这个错误是什么?我无法获取此信息。使用spawn创建进程与在命令提示符下运行进程不同,您可以传递可执行文件的绝对路径,如
spawn('/full/path/to/dita',
['--input=C:\Users\aaa\Desktop\ditamaps\mobile-phone\mobilePhone.ditamap', '--output=C:\Users\aaa\Desktop', '--format=pdf'],
{
cwd: $scope.ditaPath + "\\bin"
}, function (error, stdout, stderr) {
// work with result
console.log(stdout);
console.log(stderr);
console.log(error);
}
);
或者,如果要模拟命令提示符
spawn('cmd.exe',
['dita', '--input=C:\Users\aaa\Desktop\ditamaps\mobile-phone\mobilePhone.ditamap', '--output=C:\Users\aaa\Desktop', '--format=pdf'],
{
cwd: $scope.ditaPath + "\\bin"
}, function (error, stdout, stderr) {
// work with result
console.log(stdout);
console.log(stderr);
console.log(error);
}
);
这两种解决方案都应该可行,但在您的场景中,我想第二种可能很容易实现。手动运行它是什么意思?@JanithKasun的意思是在命令提示符下运行命令。ie
dita--input=C:\Users\aaa\Desktop\ditamaps\mobile\mobilePhone.ditamap--output=C:\Users\aaa\Desktop--format=pdf
正在运行。虽然cmd.exe
抛出了错误,但不知道为什么,但当我将其更改为dita.bat
时,它工作了。谢谢你的帮助。