【问题标题】:Angular build can't find installed Font-Awesome node_moduleAngular 构建找不到已安装的 Font-Awesome node_module
【发布时间】:2018-01-15 13:53:14
【问题描述】:

每当我使用ng build --prod 构建我的项目时,我都会收到以下错误:

ERROR in ./src/styles.scss
Module build failed: 
  ModuleBuildError: Module build failed: 
    Error: Can't resolve '~font-awesome/css/font-awesome.css' in '/app/src'

styles.css 使用@import "~font-awesome/css/font-awesome.css";。我已经验证了路径,并且模块已正确安装在node_modules/font-awesome

我也尝试过导入带有和不带有文件结尾的scss 版本。当我删除 @import 语句时,一切正常,即使我在同一个文件中使用其他 node_modules 的其他导入 - 所以这似乎只是 font-awesome 包的问题......

另外,我通过 SSH 连接到我的 docker 容器以检查 node_modules/font-awesome/css/font-awesome.css 是否存在,并且确实存在。

想法?

【问题讨论】:

    标签: javascript node.js angular npm font-awesome


    【解决方案1】:

    我不确定为什么该文件的 CSS 版本无法正常工作,但我找到了 docs on the angular-cli,它给了我一些关于如何使其正常工作的提示。

    1) 导入 SCSS 版本而不是 CSS 版本。

    @import "~font-awesome/scss/font-awesome.scss";
    

    2) 将字体路径定义为 SCSS 变量。

    $fa-font-path: "~font-awesome/fonts";
    

    请注意,SCSS 变量必须在 @import 语句之前定义。

    奇怪的是事情错误随机发生。对一个开发人员来说一切正常,但是当将 repo 拉到第二台计算机时,这个问题就出现了。

    【讨论】:

      【解决方案2】:

      这对我有用(这一行在我的主 app.css 中)

      @import "node_modules/font-awesome/scss/font-awesome";
      

      【讨论】:

      • 对我不起作用,同样的问题。直接指向node_modules 也是不好的做法,波浪号~ 应该可以工作。
      【解决方案3】:

      您需要在 .angular-cli.json 文件中添加 stylesapps 下,如下所示:

      {
        "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
        "project": {
          "name": "MyProject",
          "ejected": false
        },
        "apps": [
          {
            "root": "src",
            "outDir": "dist",
            "assets": [
              "assets",
              "manifest.json",
              {
                "glob": "**/*",
                "input": "../node_modules/leaflet/dist/images",
                "output": "./assets/",
                "allowOutsideOutDir": false
              }
            ],
            "index": "index.html",
            "main": "main.ts",
            "polyfills": "polyfills.ts",
            "test": "test.ts",
            "tsconfig": "tsconfig.app.json",
            "testTsconfig": "tsconfig.spec.json",
            "prefix": "app",
            "serviceWorker": true,
            "styles": [
              "assets/sass/global/loading.css",
              "../node_modules/font-awesome/css/font-awesome.min.css", <===================
              "styles.scss"
            ],
            "scripts": [],
            "environmentSource": "environments/environment.ts",
            "environments": {
              "dev": "environments/environment.ts",
              "demo": "environments/environment.demo.ts",
              "prod": "environments/environment.prod.ts",
              "qa": "environments/environment.qa.ts",
              "e2e": "environments/environment.e2e.ts"
            }
          }
        ],
        "e2e": {
          "protractor": {
            "config": "./protractor.conf.js"
          }
        },
        "lint": [
          {
            "project": "src/tsconfig.app.json",
            "exclude": "**/node_modules/**"
          },
          {
            "project": "src/tsconfig.spec.json"
          },
          {
            "project": "e2e/tsconfig.e2e.json"
          }
        ],
        "test": {
          "karma": {
            "config": "./karma.conf.js"
          }
        },
        "defaults": {
          "styleExt": "scss",
          "component": {
          }
        }
      }
      

      【讨论】:

      • 不,SCSS 导入应该可以工作。另请注意,我成功地进行了其他导入,就像我说的那样。例如我做@import "~bootstrap/scss/bootstrap.scss";
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-10
      • 2019-02-26
      • 1970-01-01
      • 2022-08-21
      • 2021-01-21
      • 1970-01-01
      相关资源
      最近更新 更多