gpt4 book ai didi

node.js - Jenkins 内的 Docker 代理 - npm "cannot find module"

转载 作者:太空宇宙 更新时间:2023-11-04 01:58:24 26 4
gpt4 key购买 nike

我正在致力于以下构建步骤的自动化:- 使用 webpack 构建前端应用程序- 对其进行测试

我正在使用启用了 blue-ocean 插件的 Jenkins,这里是Jenkinsfile:

Jenkinsfile:pipeline {
agent {
dockerfile {
filename 'Dockerfile'
}

}
stages {
stage('Build') {
steps {
sh 'npm run build'
}
}
}
}

我正在使用以下Dockerfile

FROM node:latest

WORKDIR /app
COPY . /app

RUN npm install webpack -g && npm install

问题是运行npm run build时找不到webpack:

> webpack --config webpack-production.config.js --progress --colors

module.js:529
throw err;
^

Error: Cannot find module 'webpack'
at Function.Module._resolveFilename (module.js:527:15)
at Function.Module._load (module.js:476:23)
at Module.require (module.js:568:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/var/lib/jenkins/workspace/l-ui-webpack-example_master-IXSLD4CQSVAM2DRFHYHOYUANEHJ73R5PUGW4BMYVT5WPGB6ZZKEQ/webpack-production.config.js:1:79)

看起来命令是在主机上下文中执行的,而不是在容器上执行的,因为手动运行效果很好:

docker build . -t sample
docker run sample npm run build

这是完整的 Jenkins 日志:Jenkins build log这是存储库的链接:Source code

最佳答案

我遇到了完全相同的问题。由于某种原因,Dockerfile 中的“RUN npm install”并未在 Jenkins 管道中生效,尽管在我手动构建镜像时它运行良好。

我通过运行“npm install”作为管道中的一个步骤来使管道工作。因此,在“构建”阶段之前将其添加到您的 Jenkinsfile 中:

stage ('install app') {
steps {
sh "npm install"
}
}

我不知道为什么会发生这种情况,但这可能与 Jenkins 如何设置 Docker 构建的上下文有关。我希望其他人可以详细说明这一点。

关于node.js - Jenkins 内的 Docker 代理 - npm "cannot find module",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46927100/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com