在Jenkins Docker容器中运行“ npm install”时,出现以下错误:
[INFO] --- exec-maven-plugin:1.6.0:exec (npm install) @ geosolutions --- npm WARN tar ENOENT: no such file or directory, open '/var/jenkins_home/workspace/aproject2/node_modules/.staging/schema-utils-bdceae78/package.json' npm WARN tar ENOENT: no such file or directory, open '/var/jenkins_home/workspace/aproject2/node_modules/.staging/schema-utils-bdceae78/README.md' ...(and many lines like) ... npm WARN tar ENOENT: no such file or directory, futime npm WARN tar ENOENT: no such file or directory, futime npm WARN tar ENOENT: no such file or directory, futime npm WARN tar ENOENT: no such file or directory, futime
没有生成“ node_modules”。 node_modules / .staging中只有几个。
进入Jenkins Docker容器时,我可以通过手动执行以下操作来解决此问题:
下次,我必须跳过“ npm install”步骤,因此直接从“ ng build”开始。然后一切正常。当然,这不是一个不错的解决方法。 因此,这不是重复的问题。
我如何进行良好的“ npm安装”?
在我的Jenkins容器中,我安装了Node / Npm。 Npm为6.5,节点为8、9、10或11。所有节点均为最新的npm 6.5。
我的Jenkins图像包含以下代码,用于向其中添加npm / nodejs:
RUN apt-get install -y curl \
&& curl -sL https://deb.nodesource.com/setup_9.x | bash - \
&& apt-get install -y nodejs \
&& curl -L https://www.npmjs.com/install.sh | sh
更新:今天我在办公室遇到同样的问题。两个不同的Jenkinsjobs使用“ npm install”启动了完全相同的Maven任务。一个可以,另一个不可以。一个Jenkinsjob是通过多分支开始的,另一个是常规管道。嗯,很奇怪。
我认为这与操作环境有关,因此$ PATH,环境变量等。
答案 0 :(得分:5)
在与许多专家交谈并阅读了很多论坛帖子之后,以下是拟议的“解决方法”。很多人使用该解决方法。我希望您有比此解决方案更好的解决方案。至少,此替代方法有效。
按照解决方法,在Maven中构建Angular可以像这样:首先清除工作区,尤其是删除node_modules文件夹和package-lock.json文件。然后开始npm安装和构建操作。
如果在创建第一个构建版本后很着急,只需添加属性“ maven.exec.skip”,然后使用-P maven.exec.skip = true启动Maven。然后跳过清洁和npm安装步骤;-)
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.6.0</version>
<executions>
<execution>
<id>npm clear workspace</id>
<goals>
<goal>exec</goal>
</goals>
<phase>initialize</phase>
<configuration>
<skip>${maven.exec.skip}</skip>
<executable>rm</executable>
<arguments>
<argument>-rf</argument>
<argument>node_modules</argument>
<argument>package-lock.json</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>npm install</id>
<goals>
<goal>exec</goal>
</goals>
<phase>initialize</phase>
<configuration>
<skip>${maven.exec.skip}</skip>
<executable>npm</executable>
<arguments>
<argument>install</argument>
</arguments>
</configuration>
</execution>
<execution>
<id>build Angular production code</id>
<goals>
<goal>exec</goal>
</goals>
<phase>generate-resources</phase>
<configuration>
<executable>npm</executable>
<arguments>
<argument>run</argument>
<argument>build</argument>
<!--<argument>--prod</argument>-->
</arguments>
</configuration>
</execution>
</executions>
</plugin>