我正在尝试使用批处理脚本配置Protractor框架。我编写了用于下载和安装Node.js的批处理脚本,并命名为“ prereq.bat”
set NODEJS_FILENAME=node-v10.15.0-x64.msi
set NODEJS_URL=https://nodejs.org/dist/latest-v10.x/%NODEJS_FILENAME%
set NODEJS_DOWNLOAD_LOCATION=C:\
powershell -NoExit -Command "(New-Object Net.WebClient).DownloadFile('%NODEJS_URL%', '%NODEJS_DOWNLOAD_LOCATION%%NODEJS_FILENAME%'); exit;"
msiexec /qn /l* C:\node-log.txt /i %NODEJS_DOWNLOAD_LOCATION%%NODEJS_FILENAME%
exit
第二个批处理文件“ config.bat”是我放置所有npm命令来配置量角器和其他所需库的地方
npm install -g protractor && npm install protractor-beautiful-reporter && npm install js-yaml && webdriver-manager update
我用“设置”按钮创建了一个简单的JAVA GUI工具。单击时,使用两个单独的“ Runtime.getRuntime()。exec()”调用两个批处理文件。
在JAVA代码中,bat文件是使用以下命令执行的:
"cmd /c start "prereq.bat";
"cmd /c start "config.bat";
问题:
当我从Eclipse IDE执行完整的解决方案时,一切正常。安装节点,然后配置量角器, 但是,当我将项目导出为可运行的jar并尝试执行时,Node安装成功,但是当调用第二个批处理“ config.bat”时,我得到了“无法识别npm”错误
我尝试的解决方案: 在代码中,我使用了Process.waitFor()方法,以便仅在第一个批处理命令成功运行时才调用第二个批处理。仍然,得到同样的错误。
感谢各种帮助。
答案 0 :(得分:1)
尝试在PATH
的开头将nodejs安装目录添加到config.bat
环境变量中。这样cmd.exe可以通过npm
环境变量来找到PATH
二进制文件。
// config.bat
set PATH=<Nodejs installation directory>;%PATH%
npm install -g protractor && npm install protractor-beautiful-reporter && npm install js-yaml && webdriver-manager update