在 Windows 上使用 Ant 脚本运行 npm, ng 命令,"The system cannot find the file specified"错误



当我尝试运行以下执行"npm">命令的 Ant 脚本时:

<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:DevelopmentworkspacetraqpathWebSource"): 
CreateProcess error=2, The system cannot find the file specified

当我尝试运行 Angular-CLI "ng"> 命令时,也会发生同样的情况:

<target name ="test">
        <exec executable="ng" failonerror="true">
            <arg value="build"/>
            <arg value="--prod"/>
            <arg value="--bh"/>
        </exec>
</target>

使用相同的错误消息,但对于"ng":

Execute failed: java.io.IOException: Cannot run program "ng" 
(in directory "C:DevelopmentworkspacetraqpathWebSource"): 
CreateProcess error=2, The system cannot find the file specified

这两个命令在Windows命令行中运行没有问题,这意味着NodeJS安装是正确的,并且NodeJS路径在PATH系统变量中正确配置。

我通过修改 Ant 脚本来指定"npm"可执行文件的全名(以及第二种情况下的"ng"命令(来解决问题:

我的新 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>
请注意,我使用了"npm.cmd">

而不是"npm",使用了">ng.cmd">而不是"ng"。

我解决了它与您的解决方案类似,只是我调用了"npm build",默认情况下包含在"脚本"部分下的 package.json 中。

<target name="build_windows">
  <exec executable="npm.cmd" failonerror="true">
    <arg value="run-script"/>
    <arg value="build"/>
  </exec>
</target>

我甚至引入了另一个类似于"build"的npm脚本行,名为"buildprod",如下所示:

"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 具有正确的脚本。

<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环境中运行

相关内容

  • 没有找到相关文章

最新更新