Angular 11 - ng serve - 不推荐使用选项“sourceMap”

vik*_*ing 5 angular-compiler-cli angular angular-builder

我将 Angular 项目从 Angular 10 更新到 11x。一切正常,除了一个关于运行项目使用的警告ng serve(在 ng serve 中没有任何选项)。警告是:

不推荐使用选项“sourceMap”:改用浏览器构建器中的“sourceMap”选项。

警告未出现在 中ng build

以下是angular.json项目中浏览器构建器部分的样子:

"builder": "@angular-devkit/build-angular:browser",
          "options": {
            "outputPath": "dist/my-app",
            "index": "src/index.html",
            "sourceMap": true,
            "main": "src/main.ts",
            "polyfills": "src/polyfills.ts",
            "tsConfig": "tsconfig.app.json",
            "aot": true,
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ],
Run Code Online (Sandbox Code Playgroud)

Angular 11 中的某些相关内容发生了变化?如何消除此警告?

Thi*_*ult 12

根据之前的评论,这是一个工作配置

在 中angular.json,将此配置添加到 projects.[NAME_OF_YOUR_PROJECT].architect.serve.configurations

"dev": {
  "browserTarget": "[NAME_OF_YOUR_PROJECT]:build:dev"
}
Run Code Online (Sandbox Code Playgroud)

像那样 :

...
"architect": {
  "serve": {
    ...
    "configurations": {
      "production": {
        ...
      },
      "dev": {
        "browserTarget": "[NAME_OF_YOUR_PROJECT]:build:dev"
      }
    }
  },
  ...
Run Code Online (Sandbox Code Playgroud)

然后"dev"在 中添加相应的配置projects.[NAME_OF_YOUR_PROJECT].architect.build.configurations

"dev": {
  "optimization": false,
  "sourceMap": true
}
Run Code Online (Sandbox Code Playgroud)

就像这个例子:

...
"architect": {
  "build": {
    ...
    "configurations": {
      "production": {
        ...
      },
      "dev": {
        "optimization": false,
        "sourceMap": true
      }
    }
  },
...
Run Code Online (Sandbox Code Playgroud)

现在您只需编辑"start"以下脚本命令package.json

...
"scripts": {
  "start": "ng serve --configuration=dev",
  ...
Run Code Online (Sandbox Code Playgroud)

您应该在您最喜欢的浏览器中检索源地图文件!

  • 这应该是公认的答案。 (5认同)

HTN*_*HTN 5

您需要删除sourceMapfrom serve --> options --> sourceMap,它已被弃用。


Mic*_*ore 5

我对一些答案感到困惑,这些选项并没有真正被弃用,但现在应该在 angular.json 的正确“构建”部分中指定,而不是“服务”。

  • 只需从 Angular 12 升级到 Angular13 并使用“ngserve --source-map=true --prod=false --watch=true”,但现在它说“--source-map”是一个“未知选项”。我必须使用“ngserve”,因为我必须在我们的系统本地运行 HTTPS/SSL。但现在我没有源地图?有任何想法吗? (3认同)
  • 在“serve”部分,它已被弃用:https://angular.io/cli/serve#options (2认同)
  • 是的,我们同意。只是指出,这并不意味着您不能为 ngserve 打开或关闭源映射,只要您将其放在正确的构建部分即可。只是想澄清一下,以防还有其他像我一样不明白的人。 (2认同)