Dockerize angular-cli 4项目在尝试运行时失败" ng build --aot --prod"

时间:2017-06-22 19:32:29

标签: angular docker dockerfile angular-cli

我正在尝试使用以下docker文件将我的angular-cli项目停靠:我确实遵循了以下步骤:

https://github.com/avatsaev/angular4-docker-example

---- DOCKER FILE ------



FROM nginx:1.13-alpine

ENV APP_PATH /app
ENV PATH $APP_PATH/node_modules/@angular/cli/bin/:$PATH


RUN apk add --update --no-cache nodejs && mkdir $APP_PATH && rm -rf /etc/nginx/conf.d/*
WORKDIR $APP_PATH

COPY . .

COPY nginx/default.conf /etc/nginx/conf.d/

ARG NPM_TOKEN
COPY .npmrc .npmrc
COPY package.json package.json

RUN npm install
  ng build --aot --prod \
  && rm -rf /usr/share/nginx/html/* \
  && mv ./dist/* /usr/share/nginx/html/ \
  && npm cache clean \
  && apk del nodejs libstdc++ libgcc libuv http-parser ca-certificates \
  && rm -rf ./*

CMD ["nginx", "-g", "daemon off;"]




它下载软件包,运行npm install fine并且它失败了" build ng build --aot --prod", 它成功下载所有包,包括打字稿,不知道为什么它在这里失败, 我没有从异常中得到任何线索:

module.js:471
    throw err;
    ^

Error: Cannot find module 'typescript'
    at Function.Module._resolveFilename (module.js:469:15)
    at Function.Module._load (module.js:417:25)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/app/node_modules/@angular/cli/models/config/config.js:5:12)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)

1 个答案:

答案 0 :(得分:0)

package.json中的一个包是指私有注册表我的错误而不是仅为该包标记私有注册表我在我的.npmrc文件中做了一个全局标记,看起来像

"registry=URl private registry" 

应该是

"scope:registry=URL for private registry"

所以它是从私人注册表下载公共包,由于某种原因没有按预期下载某些模块。这就是我得到的原因 Cannot find module 'typescript' error。 同时我的.npmrc文件中的授权令牌因多次重试而损坏,我不确定如何删除文件并再次撤销令牌并重新执行npm install以使其正常工作。以下链接包含有关npm令牌和下载docker私有包的信息。我希望这有助于万一有人得到类似的问题。

https://docs.npmjs.com/private-modules/ci-server-config