【问题标题】:ng is not recognised as an internal or external command. Jenkins + Angular CLIng 不被识别为内部或外部命令。詹金斯 + 角 CLI
【发布时间】:2018-04-28 01:59:46
【问题描述】:

我正在尝试为 Angular CLI 项目设置 Jenkins。我已经在特定用户帐户下的 Jenkins 服务器上安装了节点和 Angular Cli。 如果我在服务器上打开命令提示符并执行以下命令以验证它们是否已正确安装,结果如下:

我已经用 Jenkins 配置了项目,我创建了两个构建步骤,两个执行两个 bat 文件。

一次运行:npm install

第二个运行:ng build --prod

然后我构建 Jenkins,它运行 npm install 但运行 ng build --prod 失败,因为它说“'ng' 未被识别为内部或外部命令”。

我做错了吗?有没有另一种方法可以使用 node_modules 文件夹上的 angular cli,所以它不需要使用服务器上安装的 angular cli。似乎 Angular CLI 仅为服务器上的我的用户安装,而不是为 Jenkins 用来构建的用户安装。

PS:我使用以下方式全局安装了 Angular CLI:

npm i -g @angular/cli

【问题讨论】:

    标签: node.js jenkins angular-cli windows-server-2012-r2


    【解决方案1】:

    无需在服务器上安装angular cli,运行即可

    npm run ng -- build 
    

    这将从您的项目 devDependencies 运行本地版本

    通过这种方式,您可以将任何标志传递给本地 cli npm run ng -- testnpm run ng -- lint

    您可以像这样将其他标志传递给ng
    run ng -- build --prod

    更多详情https://docs.npmjs.com/cli/run-script

    【讨论】:

    • 这是有效的,但它在运行构建时排除了 --test 等附加参数
    • 对于仍然通过搜索找到这篇文章的每个人,您可以查看我对问题的回答,以了解如何在运行构建时包含其他参数,例如 --test (简而言之,使用:npm run ng -- build --test)
    【解决方案2】:

    当有人搜索相同的问题并找到这个问题时(就像我一样),只是为了进一步澄清:

    如果您想在运行构建命令时使用 --prod 标志,如本问题所述,您可以使用:

    npm run ng -- build --prod
    

    重要的是“ng”和“build”之间的“--”和间距。这是由于“npm run”的语法,更多信息可以在这里找到:https://docs.npmjs.com/cli/run-script

    这也解决了已接受答案下方评论中描述的问题:“这是有效的,但它在运行构建时排除了诸如 --test 之类的附加参数”

    【讨论】:

      【解决方案3】:
      npm run ng -- build 
      

      我们可以在不安装angular cli的情况下使用它

      【讨论】:

        【解决方案4】:

        如果它在本地命令提示符下工作,请重新启动 Jenkins 服务器。

        重启 Jenkins --> http://host-name:port/base-url/restart

                        ex:- http://localhost:8080/jenkins/restart
        

        如果它不适用于本地命令以及全局安装 angular CLI 并设置环境设置并执行上一步。

        【讨论】:

          【解决方案5】:

          尝试如下。

          BUILD_ID=dontKillMe nohup ng 服务

          【讨论】:

            【解决方案6】:

            npm run ng build 的唯一问题是它在构建后省略了任何其他参数,例如 --prod--test

            以下是我用来从 Jenkins 成功运行我的角度构建的命令。最后一个命令通过设置路径变量以肮脏的方式执行。不知道是否有更清洁的方法来做到这一点。这确实可以正确执行命令而不会省略任何内容。

            @echo on
            cmd /c npm install -g @angular/cli@latest
            
            echo yarn Install
            cmd /c yarn
            
            echo Build
            set PATH=%PATH%;C:\Users\Administrator\AppData\Roaming\npm;C:\Users\Administrator\AppData\Roaming\npm\node_modules\@angular\cli\bin;
            ng build --prod --aot=true
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-12-17
              • 2016-10-25
              • 2018-01-01
              • 1970-01-01
              • 1970-01-01
              • 2018-08-08
              • 1970-01-01
              相关资源
              最近更新 更多