Angular Build上的Browserslist错误

时间:2018-07-27 21:11:41

标签: angular bootstrap-4 angular-cli

我有一个Angular 4应用程序,该应用程序最近开始在构建服务器上出现问题。 Angular版本为^4.4.6,CLI版本为1.5.5。直到本周为止,在构建服务器上构建应用程序都没有问题,并且我们没有更改任何软件包版本。在构建服务器上构建Docker映像时,会发生此构建错误。该应用程序还可以在我的本地计算机上正常构建。这是错误的输出以及相关的软件包版本:

enter image description here

原始输出为:

ERROR in ./node_modules/raw-loader!./node_modules/postcss-loader/lib??embedded!./node_modules/sass-loader/lib/loader.js??ref--8-3!./src/styles.scss
Module build failed: 
@include caret;
        ^
    No mixin named caret
    in /usr/src/app/node_modules/bootstrap/scss/_dropdown.scss (line 11, column 12)
ERROR in ./node_modules/raw-loader!./node_modules/postcss-loader/lib??embedded!./node_modules/material-design-iconic-font/dist/css/material-design-iconic-font.min.css
Module build failed: BrowserslistError: Write any browsers query (for instance, `defaults`) before `not ie <= 11`
    at /usr/src/app/node_modules/browserslist/index.js:139:15
    at Array.reduce (<anonymous>)
    at resolve (/usr/src/app/node_modules/browserslist/index.js:132:18)
    at browserslist (/usr/src/app/node_modules/browserslist/index.js:224:16)
    at Browsers.parse (/usr/src/app/node_modules/autoprefixer/lib/browsers.js:61:16)
    at new Browsers (/usr/src/app/node_modules/autoprefixer/lib/browsers.js:52:30)
    at loadPrefixes (/usr/src/app/node_modules/autoprefixer/lib/autoprefixer.js:70:24)
    at plugin (/usr/src/app/node_modules/autoprefixer/lib/autoprefixer.js:81:24)
    at LazyResult.run (/usr/src/app/node_modules/postcss/lib/lazy-result.js:277:20)
    at LazyResult.asyncTick (/usr/src/app/node_modules/postcss/lib/lazy-result.js:192:32)
    at /usr/src/app/node_modules/postcss/lib/lazy-result.js:197:27
    at <anonymous>
ERROR in ./node_modules/raw-loader!./node_modules/postcss-loader/lib??embedded!./node_modules/animate.css/animate.min.css
Module build failed: BrowserslistError: Write any browsers query (for instance, `defaults`) before `not ie <= 11`
    at /usr/src/app/node_modules/browserslist/index.js:139:15
    at Array.reduce (<anonymous>)
    at resolve (/usr/src/app/node_modules/browserslist/index.js:132:18)
    at browserslist (/usr/src/app/node_modules/browserslist/index.js:224:16)
    at Browsers.parse (/usr/src/app/node_modules/autoprefixer/lib/browsers.js:61:16)
    at new Browsers (/usr/src/app/node_modules/autoprefixer/lib/browsers.js:52:30)
    at loadPrefixes (/usr/src/app/node_modules/autoprefixer/lib/autoprefixer.js:70:24)
    at plugin (/usr/src/app/node_modules/autoprefixer/lib/autoprefixer.js:81:24)
    at LazyResult.run (/usr/src/app/node_modules/postcss/lib/lazy-result.js:277:20)
    at LazyResult.asyncTick (/usr/src/app/node_modules/postcss/lib/lazy-result.js:192:32)
    at LazyResult.asyncTick (/usr/src/app/node_modules/postcss/lib/lazy-result.js:204:22)
    at LazyResult.asyncTick (/usr/src/app/node_modules/postcss/lib/lazy-result.js:204:22)
    at LazyResult.asyncTick (/usr/src/app/node_modules/postcss/lib/lazy-result.js:204:22)
    at /usr/src/app/node_modules/postcss/lib/lazy-result.js:197:27
    at <anonymous>
ERROR in ./node_modules/raw-loader!./node_modules/postcss-loader/lib??embedded!./node_modules/nouislider/distribute/nouislider.min.css
Module build failed: BrowserslistError: Write any browsers query (for instance, `defaults`) before `not ie <= 11`
    at /usr/src/app/node_modules/browserslist/index.js:139:15
    at Array.reduce (<anonymous>)
    at resolve (/usr/src/app/node_modules/browserslist/index.js:132:18)
    at browserslist (/usr/src/app/node_modules/browserslist/index.js:224:16)
    at Browsers.parse (/usr/src/app/node_modules/autoprefixer/lib/browsers.js:61:16)
    at new Browsers (/usr/src/app/node_modules/autoprefixer/lib/browsers.js:52:30)
    at loadPrefixes (/usr/src/app/node_modules/autoprefixer/lib/autoprefixer.js:70:24)
    at plugin (/usr/src/app/node_modules/autoprefixer/lib/autoprefixer.js:81:24)
    at LazyResult.run (/usr/src/app/node_modules/postcss/lib/lazy-result.js:277:20)
    at LazyResult.asyncTick (/usr/src/app/node_modules/postcss/lib/lazy-result.js:192:32)
    at LazyResult.asyncTick (/usr/src/app/node_modules/postcss/lib/lazy-result.js:204:22)
    at LazyResult.asyncTick (/usr/src/app/node_modules/postcss/lib/lazy-result.js:204:22)
    at LazyResult.asyncTick (/usr/src/app/node_modules/postcss/lib/lazy-result.js:204:22)
    at /usr/src/app/node_modules/postcss/lib/lazy-result.js:197:27
    at <anonymous>
ERROR in ./node_modules/raw-loader!./node_modules/postcss-loader/lib??embedded!./node_modules/dropzone/dist/min/dropzone.min.css
Module build failed: BrowserslistError: Write any browsers query (for instance, `defaults`) before `not ie <= 11`
    at /usr/src/app/node_modules/browserslist/index.js:139:15
    at Array.reduce (<anonymous>)
    at resolve (/usr/src/app/node_modules/browserslist/index.js:132:18)
    at browserslist (/usr/src/app/node_modules/browserslist/index.js:224:16)
    at Browsers.parse (/usr/src/app/node_modules/autoprefixer/lib/browsers.js:61:16)
    at new Browsers (/usr/src/app/node_modules/autoprefixer/lib/browsers.js:52:30)
    at loadPrefixes (/usr/src/app/node_modules/autoprefixer/lib/autoprefixer.js:70:24)
    at plugin (/usr/src/app/node_modules/autoprefixer/lib/autoprefixer.js:81:24)
    at LazyResult.run (/usr/src/app/node_modules/postcss/lib/lazy-result.js:277:20)
    at LazyResult.asyncTick (/usr/src/app/node_modules/postcss/lib/lazy-result.js:192:32)
    at LazyResult.asyncTick (/usr/src/app/node_modules/postcss/lib/lazy-result.js:204:22)
    at LazyResult.asyncTick (/usr/src/app/node_modules/postcss/lib/lazy-result.js:204:22)
    at LazyResult.asyncTick (/usr/src/app/node_modules/postcss/lib/lazy-result.js:204:22)
    at /usr/src/app/node_modules/postcss/lib/lazy-result.js:197:27
    at <anonymous>

令人沮丧的是,我在本地检查了引导程序的版本以及node_modules文件夹中安装的内容,并且它引用的文件_dropdown.scss并未尝试使用完全称为caret的混合。

同样,仅在TeamCity容器内的构建服务器上本地构建任何环境时,我都没有看到这些问题。我尝试过更改package.json来安装特定版本的软件包,但无济于事。

有没有一种方法可以对此进行调试,并确切确定要安装的软件包的版本以及如何修复错误?

编辑

我在注释上方加了一个字,指出在为该应用构建Docker映像时会发生此错误。 Dockerfile如下:

FROM johnpapa/angular-cli as angular-build
WORKDIR /usr/src/app
COPY package.json package.json
RUN npm install --silent
# RUN npm install typescript@'>=2.1.0 <2.4.0'
COPY . .
RUN ng build --env=test

FROM nginx:alpine
LABEL author="Preston Lamb"
COPY nginx.conf /etc/nginx/nginx.conf
COPY --from=angular-build /usr/src/app/dist /usr/share/nginx/html
EXPOSE 80 443
ENTRYPOINT [ "nginx", "-g", "daemon off;" ]

1 个答案:

答案 0 :(得分:1)

您可以尝试的是从package.json中删除所有插入符号。如果您的某个部门的次要版本使您不满意,则修复版本将使您摆脱此次要修订问题。但是,您最终将需要返回并找出引起此问题的部门。可能需要一些时间。我建议分而治之。重新插入一半的插入符号。如果错误再次出现,则是其中之一。并继续进行一半直到找到那一个。如果不止一个,那么您的生活将会糟透了。

祝你好运!干杯普雷斯顿!