json - Angular 6 - JSON 中位置 0 的意外标记
问题描述
我的 Angular 5 项目运行正常,在将其更新到版本 6 后,ng build
由于以下原因停止使用:
./src/app/assets/i18/en.json 中的错误模块解析失败:位置 0 处的 JSON 中出现意外标记您可能需要适当的加载程序来处理此文件类型。
这是我的json文件:
{
"app": {
"Welcome": "Welcome",
"New": "New"
},
"mainMenu": {
"Home": "Home",
"Logout": "Logout"
},
"pageHeader": {
"About": "About",
"Settings": "Settings"
}
}
网络上的大多数解决方案都在谈论CopyWebpackPlugin,但该项目不使用任何 Webpack 配置文件。
然后,按照此链接,我尝试将 json 作为数组:
{
"menu":[
"app": {
"Welcome": "Welcome",
"New": "New"
},
"mainMenu": {
"Home": "Home",
"Logout": "Logout"
},
"pageHeader": {
"About": "About",
"Settings": "Settings"
}
]
}
但是得到了以下错误,尽管文件包含 16 行。
意外令牌:在 JSON 中的位置 24
任何想法 ?
解决方案
受@AndrewJuniorHoward 启发,发现在升级过程中,所有 json 文件都被编码为 UTF-8-BOM 而不是 UTF-8,这就是 Angular 在构建期间无法加载它们的原因。在 Visual Studio 代码中,我只是创建了空文件,将旧 json 文件的内容粘贴到其中,然后覆盖它们,一切正常。
推荐阅读
- android - Firebase GoogleSignIn 无法通过 Play 商店提供发布版本
- excel - 试图根据最新日期查找价值但出现错误
- javascript - 在构造函数类中调用函数
- python-2.7 - Apache Beam:如何同时创建多个经过相同 PTransform 的 PCollection?
- protractor - 量角器页面对象定义未按预期工作
- php - 在 Linux 上,我想停止对特定 Windows 服务器的身份验证,该服务器将使用它使用 Sendmail 发送邮件
- angular - Angular2 + .Net MVC中AppComponent之外的MyComponent
- mailchimp-api-v3.0 - 如何获得搜索成员的完全匹配?
- php - 在PHP中的字符串内循环
- hadoop - 容器运行超出物理内存限制