当我尝试运行以下Ant脚本时,该脚本执行" npm" 命令:
<target name ="test">
<exec executable="npm" failonerror="true">
<arg value="install" />
</exec>
</target>
失败并出现此错误:
Execute failed: java.io.IOException: Cannot run program "npm"
(in directory "C:\Development\workspace\traqpath\WebSource"):
CreateProcess error=2, The system cannot find the file specified
当我尝试运行Angular-CLI &#34; ng&#34; 命令时,情况也是如此:
<target name ="test">
<exec executable="ng" failonerror="true">
<arg value="build"/>
<arg value="--prod"/>
<arg value="--bh"/>
</exec>
</target>
使用相同的错误消息,但对于&#34; ng&#34;:
Execute failed: java.io.IOException: Cannot run program "ng"
(in directory "C:\Development\workspace\traqpath\WebSource"):
CreateProcess error=2, The system cannot find the file specified
两个命令在Windows命令行中运行都没有问题,这意味着NodeJS安装正确,并且在PATH系统变量中正确配置了NodeJS路径。
答案 0 :(得分:2)
我通过修改Ant脚本来指定&#34; npm&#34;的全名解决了这个问题。可执行文件,(以及第二种情况下的&#34; ng&#34;命令):
我的新Ant脚本现在看起来像这样:
<target name ="test">
<exec executable="npm.cmd" failonerror="true">
<arg value="install" />
</exec>
</target>
<target name ="test">
<exec executable="ng.cmd" failonerror="true">
<arg value="build"/>
<arg value="--prod"/>
<arg value="--bh"/>
</exec>
</target>
请注意,我使用了&#34; npm.cmd&#34; 而不是&#34; npm&#34;和&#34; ng.cmd&#34; < / strong>而不是&#34; ng&#34;。
答案 1 :(得分:0)
我解决了类似于你的解决方案,除了我调用&#34; npm build&#34;默认包含在&#34;脚本&#34;下的package.json中。部分。
<target name="build_windows">
<exec executable="npm.cmd" failonerror="true">
<arg value="run-script"/>
<arg value="build"/>
</exec>
</target>
我甚至介绍了另一个类似于&#34; build&#34;的npm脚本行。命名为&#34; buildprod&#34;像这样:
"scripts": {
"build": "ng build -bh /context/",
"buildprod": "ng build --prod --aot -bh /context/"
}
然后在我的ant build.xml文件中为生产构建引入了类似的目标:
<target name="build_prod_windows">
<exec executable="npm.cmd" failonerror="true">
<arg value="run-script"/>
<arg value="buildprod"/>
</exec>
</target>
这样,您可以在其他角度项目中保留相同的ant脚本,而不必担心在build.xml文件中保留不同的参数。相反,您需要确保package.json具有正确的脚本。
答案 2 :(得分:-3)
<target name ="test">
<exec executable="ng" failonerror="true">
<arg value="build"/>
<arg value="--prod"/>
<arg value="--bh"/>
</exec>
</target>
当我尝试在linux中运行时,它再次给出同样的错误,说 执行失败:java.io.IOException:无法运行程序“ng”....
如何通过ANT在linux env中运行