【问题标题】:style-loader stop working when I update "@angular-devkit/build-angular"当我更新“@angular-devkit/build-angular”时,样式加载器停止工作
【发布时间】:2020-04-16 02:04:57
【问题描述】:

我正在使用 angular8 并遇到问题,

为了动态加载我的样式,我使用了下面的代码,它工作正常,但是当我将包 "@angular-deficit/build-angular": "^0. 800.0" 更新为 "@angular-deficit/build-angular": "^0. 803.21" 时,它停止工作。该应用程序运行良好,终端和浏览器控制台中没有错误,但应用程序未实现样式。

declare function require(name: string): any;
 ngOnInit() {
    require('style-loader!./file-path');
}

package.json

{
"name": "latest-frontend-theme",
"version": "0.0.0",
"scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e",
    "bundle-report": "webpack-bundle-analyzer dist/stats.json"
},
"private": true,
"dependencies": {
    "@agm/core": "^1.1.0",
    "@angular/animations": "^8.2.14",
    "@angular/cdk": "^8.2.3",
    "@angular/common": "~8.2.14",
    "@angular/compiler": "~8.2.14",
    "@angular/core": "~8.2.14",
    "@angular/forms": "~8.2.14",
    "@angular/material": "^8.2.3",
    "@angular/platform-browser": "~8.2.14",
    "@angular/platform-browser-dynamic": "~8.2.14",
    "@angular/router": "~8.2.14",
    "@ngx-loading-bar/core": "^4.2.0",
    "@ngx-loading-bar/router": "^4.2.0",
    "angular2-text-mask": "^9.0.0",
    "crypto-js": "^3.1.9-1",
    "file-saver": "^2.0.2",
    "moment": "^2.24.0",
    "mydatepicker": "^2.6.8",
    "ng2-ckeditor": "^1.2.6",
    "ng2-file-upload": "^1.3.0",
    "ng6-toastr": "^6.0.0",
    "ngx-google-places-autocomplete": "^2.0.4",
    "ngx-slick": "^0.2.1",
    "rxjs": "~6.5.3",
    "rxjs-compat": "^6.5.3",
    "tslib": "^1.9.0",
    "zone.js": "~0.10.2"
},
"devDependencies": {
    "@angular-devkit/build-angular": "~0.803.21",
    "@angular/cli": "~8.3.21",
    "@angular/compiler-cli": "~8.2.14",
    "@angular/language-service": "~8.2.14",
    "@types/jasmine": "~3.5.0",
    "@types/jasminewd2": "~2.0.8",
    "@types/node": "~12.12.21",
    "codelyzer": "^5.2.1",
    "jasmine-core": "~3.5.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~4.4.1",
    "karma-chrome-launcher": "~3.1.0",
    "karma-coverage-istanbul-reporter": "~2.1.1",
    "karma-jasmine": "~2.0.1",
    "karma-jasmine-html-reporter": "^1.4.0",
    "protractor": "~5.4.0",
    "ts-node": "~8.5.4",
    "tslint": "~5.20.1",
    "typescript": "~3.4.3",
    "webpack-bundle-analyzer": "^3.6.0"
}

}

任何形式的帮助都是可观的。

【问题讨论】:

  • 可以发帖package.json吗?
  • 我已经更新了问题并发布了 package.json 文件。
  • 首先尝试 2 件事,停止 angular 应用程序,退出 vs code 然后启动 vs code 并再次运行 angular 应用程序。之后请在此处更新。
  • 你能解释一下什么是“vs code”吗?
  • 你的 IDE 是什么,我以为是 Visual Studio 代码?

标签: javascript angular angular6 angular8 webpack-style-loader


【解决方案1】:

我今天遇到了同样的问题,但仍然无法使用 style-loader 找到解决方案,因此我想出了一个替代解决方案,我将分享,因为这仍然没有答案。

我以前是这样使用style-loader的:

// in the AppComponent
private initTheme(settings: Settings) {

  if (settings.style) {
    // set specific theme 
    require(`style-loader!./../../src/${settings.style.id}-theme.scss`);
  }
  else {
    require(`style-loader!./../../src/default-theme.scss`);
  }
}

我的解决方案是更新此函数以手动应用样式表(作为已处理的 CSS 文件),如下所示:

// in the AppComponent
private initTheme(settings: Settings) {

  const applyStyleSheet = (styleName: string) => {
    const head = document.getElementsByTagName('head')[0];
    const style = document.createElement('link');
    style.rel = 'stylesheet';
    style.href = `${styleName}.css`;
    head.appendChild(style);
  };

    if (settings.style) {
      // set specific theme
      applyStyleSheet(`${settings.style.id}-theme`);
    }
    else {
      applyStyleSheet(`default-theme`);
    }
  }

为了处理 SCSS 文件,我更改了我的 angular.json 文件,将 extractCss 添加到选项中:

"options": {
  "extractCss": true
  ...
}

...并指定styles数组中的每个SCSS文件要处理,但不注入:

"styles": [
  {
    "input": "src/default-theme.scss",
    "bundleName": "default-theme",
    "inject": false
  },
  {
    "input": "src/basic-theme.scss",
    "bundleName": "basic-theme",
    "inject": false
  }
  ...
]
  

【讨论】:

    猜你喜欢
    • 2020-01-06
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 2018-10-28
    • 2022-01-05
    相关资源
    最近更新 更多