Angular 11 字体内联失败

Angular 11 Inlining of fonts failed

正在尝试在代理后的系统中构建 angular11 应用程序。当 运行 "ng build --prod" 我得到这个错误:

Inlining of fonts failed. An error has occurred while retrieving https://fonts.googleapis.com/css?family=Roboto:300,400,500&display=swap over the internet. getaddrinfo ENOTFOUND fonts.googleapis.com

一些帖子说要禁用它,指向此 angular 文档 URL 以获取更多信息,但我无法让它工作。如果我将 angular.json“优化”参数编辑到下面,我会得到一个 Schema validation failed...Data path .optimization should be boolean 错误:

"optimization": { 
  "scripts": true,
  "styles": {
    "minify": true,
    "inlineCritical": true
  },
  "fonts": false
}

如果我按照这个 post(搜索“AUTOMATIC FONT INLINING”)并在下面添加 package.json,它似乎没有任何效果:

"optimization": { 
  "scripts": true,
  "styles": false,
  "fonts": false
}

按照 Angular 对您提到的 URL 的指导,我只更改了 angular.json 文件,方式略有不同,它对我有用。这是我在生产 属性.

下的 angular.json 文件中更改的内容
"production": {
    ...
    "optimization": {
        "scripts": true,
         "styles": true,
         "fonts": false
     },
     ...
},

根据 https://github.com/angular/angular-cli/pull/19848

设置环境 HTTPS_PROXY 变量就可以了。它在公司代理后面对我有用(不要忘记 http://):

SET HTTPS_PROXY=http://<server-name>:<server-port>
ng build

环境:Windows 10, nodejs v14.17.4, angular 12.2.0

我遇到了同样的问题,但建议没有用(代理除外)。所以我从 google 服务器下载了 css 文件并通过 angular.json 绑定到源

"styles": [
    "src/styles.scss",
    "src/assets/fonts/roboto.scss",
    "src/assets/fonts/material-icons.scss"
]

我遇到了同样的问题。尝试更改优化但没有帮助。

最后我在我的终端里调用了 'npm audit fix --force',这解决了我的问题。

--force 参数在这里相当暴力,但如果您对该命令有信心,应该不会发生任何坏事。

这只是一种样式 sheet,请随时将其从“index.html”(或 link 指向它的任何页面)中删除:

<link
  href="https://fonts.googleapis.com/icon?family=Material+Icons"
  rel="stylesheet"
/>

或者您可以访问 href link 以获取其内容并将其作为新内容 css 或复制到现有内容中。

我的情况是我的 VPN 服务有问题。