angular & angular/cli 版本错误

Error with angular & angular/cli versions

我在 angular docker 项目上有这个错误:

industrialareas_angular_ctnr | This version of CLI is only compatible with Angular versions ^13.0.0-next || >=13.0.0 <14.0.0,
industrialareas_angular_ctnr | but Angular version 12.2.16 was found instead.

我的 Dockerfile-angular 文件是:

FROM node:14
WORKDIR /usr/src/app
RUN npm uninstall -g @angular/cli
RUN npm uninstall @angular/cli
RUN npm i @angular/cli@12.2.8
RUN npm cache clean --force
COPY ./project/package*.json .
RUN npm install
RUN npm link @angular/cli
COPY ./project .
EXPOSE 4200
CMD npm start

我的 docker-compose.yml 文件是:

version: '3.7'
services:
  angular:
    container_name: industrialareas_angular_ctnr
    build:
      context: .
      dockerfile: Dockerfile-angular
    restart: unless-stopped
    volumes:
      - ./project/src:/usr/src/app/src
    ports:
      - 4200:4200

package.json 文件是:

...
"dependencies": {
  ...
  "@angular/core": "~12.2.0",
  ...
},
"devDependencies": {
  ...
  "@angular/cli": "~12.2.8",
  ...

我已经检查了这个 link

的兼容性版本

有人可以帮助我吗?提前致谢。

Angular 您在 JSON 中声明的 CLI 版本与您使用的 Angular 核心版本不兼容:如果您 post 整个 package.json 文件内容.

要解决问题,您可以将 angular 核心版本升级到 13.0.0 和下一个,或者您可以降级 angular cli 版本:link 不是来自官方文档,所以不可行

问题是 node 带来了最新预定义版本的 angular cli,特别是 @angular/cli@13.2.3 而 docker 命令默认采用了它。

替换 Dockerfile 中的这一行:

RUN npm link @angular/cli

对此:

RUN npm link @angular/cli@12.2.8

一切正常!