Angular 6 应用程序:清单:行:1,列:1,意外标记

Angular 6 application : Manifest: Line: 1, column: 1, Unexpected token

构建代码并将其部署到 Azure 时会出现此错误。 当代码是 运行 在本地使用 VSCode 时,这不会出现在控制台中。 对此事的任何帮助表示赞赏。

清单文件代码:

{
    "name": "",
    "icons": [
        {
            "src": "assets/android-chrome-192x192.png",
            "sizes": "192x192",
            "type": "image/png"
        }
    ],
    "theme_color": "#ffffff",
    "background_color": "#ffffff",
    "display": "standalone"
}

文件在index.html中引用如下

<link rel="manifest" href="assets/manifest.json">

今天我在 Azure 上托管的 Angular 6 项目遇到了同样的错误。

这是我的解决方法:

在我的 "web.config" 文件中:

<configuration>
<system.webServer>
  <rewrite>
    <rules>
      <rule name="Angular" stopProcessing="true">
        <match url=".*" />
        <conditions logicalGrouping="MatchAll">
          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        </conditions>
        <action type="Rewrite" url="/" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

添加这些行:

<staticContent>
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>

结果:

<configuration>
<system.webServer>
<staticContent>
<mimeMap fileExtension=".json" mimeType="application/json" />
</staticContent>
  <rewrite>
    <rules>
      <rule name="Angular" stopProcessing="true">
        <match url=".*" />
        <conditions logicalGrouping="MatchAll">
          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
        </conditions>
        <action type="Rewrite" url="/" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

这对我有用,希望对你也有用! :)

相关话题:How to allow download of .json file with ASP.NET

通过在标签中使用 crossorigin="use-credentials" 修复了它。

<link rel="manifest" crossorigin="use-credentials" href="./assets/manifest.json">

尝试在名字中加一个名字属性 记住它不应该是空的,包含空格不应该包含大写字母。

很高兴 crossorigin 属性对您的情况有所帮助。对于大多数其他人来说,这可能不会奏效。无论如何。

清单文件的缺失可能有多种原因导致此错误消息。除了缺少将其放在根目录中并在 html 文件的 head 中引用它之外,最常见的是您正在另一个环境中构建。

这些环境中的任何一个都有自己的配置。其中一些可能不会默认 wrap/pack 将 manifest.json 文件放入本地测试部署包中。

在 Angular 中,您通过使用 angular.json 文件中的指令将清单添加到资产来解决它:"src/manifest.json" 在路径 projects/app/root/architect/build/options/assets

如下所示,要涵盖多个环境。不仅仅是 build。你的成熟度越高,你需要维护的人就越多。

我尝试了很多修复,none 成功了。经过多次磨牙,我发现 Azure 不提供 .json 作为静态文件。

所以我将以下内容添加到 web.config(摘录如下)。

<configuration>

  <system.webServer>

...

    <staticContent>
      <mimeMap fileExtension=".json" mimeType="application/json" />
      <mimeMap fileExtension=".webmanifest" mimeType="application/json" />
    </staticContent>

...

  </system.webServer>
</configuration>

除了 .webmanifest 文件扩展名的第二个 MIME 设置外,SO 上的许多解决方案都提到了此修复。

它只对包含第二个文件扩展名“.webmanifest”的我有效。

您需要将 mime 类型添加到您的服务器。扩展名 .webmanifest mime 类型 application/manifest+json

如果您对其他答案有疑问,可以使用此答案:

尝试先删除 mimetype,然后再将其添加到 web.config

(加入web.config)

    <staticContent>
       <remove fileExtension=".json"/>
       <mimeMap fileExtension=".json" mimeType="application/json" />
       <remove fileExtension=".webmanifest"/>
       <mimeMap fileExtension=".webmanifest" mimeType="application/json" />
    </staticContent>