【发布时间】:2019-06-04 23:14:59
【问题描述】:
我对 TypeScript/Javascript/Node.js 比较陌生,但是在获取环境脚本 myapp_env(在 Windows 上运行 myapp_env.bat)之后,我必须执行二进制 myapp(或 Windows 上的 myapp.exe)
. myapp_env && myapp
或在 Windows (cmd) 中
myapp_env.bat && myapp.exe
我正在尝试使用 spawn:
import {exec,spawn} from 'child_process';
import {exists} from 'fs'
let programhome: string = 'C:/SoftwareAG105/Apama';
let envscript: string = programhome + '/bin/apama_env.bat';
let program: string = programhome + '/bin/correlator.exe';
exists(envscript , found =>
console.log( envscript + (found ? " is there" : " is not there")));
exists(program , found =>
console.log( program + (found ? " is there" : " is not there")));
try {
let test = spawn(envscript + ' && ' + program);
test.stdout.on('data', data => console.log(data));
test.stderr.on('data', data => console.log(data));
test.on('error', data => console.log('ERROR ' + data));
test.on('end', data => console.log('END ' + data));
test.on('exit', data => console.log('Exit ' + data));
} catch (error) {
console.log(error);
}
我收到一个ENOENT 错误,我认为这是因为它试图查看整个字符串是否作为文件存在(?)。如果我单独运行它们,那么它工作正常。在这两种情况下,exists 行都会打印“is there”....
编辑
在 samuels 回答后,我更改了以下几行
...
import {parse,format,join} from 'path'
...
let programhome: string = join( 'C:' , 'SoftwareAG105', 'Apama' );
let envscript: string = join( programhome ,'bin','apama_env.bat');
let program: string = join(programhome , 'bin' , 'correlator.exe');
exists(envscript , found => console.log( envscript + (found ? " is there" : " is not there")));
exists(program , found => console.log( program + (found ? " is there" : " is not there")));
错误错误:生成 C:\SoftwareAG105\Apama\bin\apama_env.bat && C:\SoftwareAG105\Apama\bin\correlator.exe ENOENT index.js:15 C:\SoftwareAG105\Apama\bin\apama_env.bat 有没有 index.js:9 C:\SoftwareAG105\Apama\bin\correlator.exe 在那里
TLDR;所以我的问题是我可以在 spawn 中链接命令,以便我可以获取环境并运行程序吗?
【问题讨论】:
-
在您的命令行上,您是否尝试过像这样首先并行运行它们?
'/bin/apama_env.bat && /bin/correlator.exe。有一些情况下程序在一起生成时无法启动 -
还有你使用的nodejs版本是什么?
-
是的,我从记录的字符串
/bin/apama_env.bat && /bin/correlator.exe手动运行它们,并确保事情是正确的 w.r.t。路径等...我在 Windows 上使用节点 v11.6.0,但将更新到 12.x,无论是当前的
标签: node.js typescript