设置NPM身份验证后,我在npm安装上总是遇到错误。我想在映像构建期间向我的npm私有注册表进行身份验证,并安装所需的所有依赖项。也许我误解了此身份验证过程的工作原理,但这就是我正在做的事情:
构建管道
我尝试从Service connections for builds and releases的项目设置页面建立服务连接
之后,我还按照With a Task Runner (e.g. make gulp work)
中的步骤设置了NPM身份验证任务但这不起作用。这些是我得到的错误:
“ NPM身份验证”阶段:
[warning]找到并取代了 所选.npmrc文件中的myregistry.pkgs.visualstudio.com注册表。 从文件中删除凭据并将其存储在npm服务中 而是连接(推荐),或删除npm Authenticate任务 从您的构建中使用签入.npmrc的凭据。
在“构建图像”阶段:
第4/7步:运行npm install --production --->在8724f713f1db中运行 [91mnpm错误!代码[0m [91m E404 [0m [91mnpm [0m [91mERR! 404 [0m [91m不是 找到:@ myregistry / service-logging @ latest npm ERR![0m [91m A完成 该运行的日志可在以下位置找到:npm ERR!
/root/.npm/_logs/2018-09-11T04_20_00_513Z-debug.log [0m命令 '/ bin / sh -c npm install --production'返回非零代码:1 [错误]命令'/ bin / sh -c npm install --production'返回非零代码:1 [错误] / usr / local / bin / docker失败,返回 代码:1 [section]完成:建立图片
这是我的.npmrc文件:
unsafe-perm=true
package-lock=false
registry=https://myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/registry/
always-auth=true
//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/registry/:_authToken=${NPM_TOKEN}
//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/:_authToken=${NPM_TOKEN}
这是我的Dockerfile:
FROM node:8.9-alpine
ARG NPM_TOKEN
WORKDIR /usr/src/srv/
COPY package.json package.json
COPY .npmrc .npmrc
RUN npm install --production
RUN rm -f .npmrc
COPY . .
EXPOSE 8080
CMD npm start
我们将竭诚为您提供帮助,帮助我摆脱这一问题。谢谢!
答案 0 :(得分:1)
我终于通过删除.npmrc文件中的最后两行解决了该问题。最后一行引起了问题。 NPM Authenticate任务完成后,我的.npmrc文件被修改为:
unsafe-perm=true
package-lock=false
registry=https://quasset.pkgs.visualstudio.com/_packaging/quasset/npm/registry/
always-auth=true
//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/:_authToken=${NPM_TOKEN}
//quasset.pkgs.visualstudio.com/_packaging/myregistry/npm/registry/:username=VssToken
//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/registry/:_password=***
//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/registry/:email=VssEmail
//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/registry/:always-auth=true
以某种方式,以下配置已被考虑,而NPM Authenticate插入的配置被忽略,从而导致管道错误:
//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/:_authToken=${NPM_TOKEN}
此外,由于NPM Authenticate会为您完成这项工作,因此无需添加以下行:
//myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/registry/:_authToken=${NPM_TOKEN}
通过删除上面的行,此警告消失了:
[warning]找到并取代了 所选.npmrc文件中的myregistry.pkgs.visualstudio.com注册表。 从文件中删除凭据并将其存储在npm服务中 而是连接(推荐),或删除npm Authenticate任务 从您的构建中使用签入.npmrc的凭据。
因此,总而言之,只需保持.npmrc文件如此简单:
unsafe-perm=true
package-lock=false
registry=https://myregistry.pkgs.visualstudio.com/_packaging/myregistry/npm/registry/
always-auth=true
Dockerfile一切都很好。