Angular 6-json文件不针对生产环境进行编译

Angular 6-json文件不针对生产环境进行编译,angular,Angular,我将一个json文件导入到我的组件app.component.ts中 import data_json from '../assets/json/general.json'; 但是,当我尝试使用以下命令生成生产版本时,我得到一个错误: ng build prod 这就是错误: ERROR in src/app/app.component.ts(12,23): error TS2307: Cannot find module '../assets/json/general.json'. 如果

我将一个json文件导入到我的组件app.component.ts中

import data_json from '../assets/json/general.json';
但是,当我尝试使用以下命令生成生产版本时,我得到一个错误:

ng build prod
这就是错误:

ERROR in src/app/app.component.ts(12,23): error TS2307: Cannot find module '../assets/json/general.json'.
如果我启动ng serve,它会在控制台中给我一个警告,但不会给我一个错误,我访问浏览器,看到正确加载的json

使用HTTP时,ng build-prod compile很好,但我的浏览器控制台显示下一个错误:

core.js:1521 ERROR TypeError: Cannot read property 'menu' of undefined
    at Object.eval [as updateDirectives] (AppComponent.ngfactory.js:414)
    at Object.updateDirectives (core.js:10494)
    at checkAndUpdateView (core.js:10147)
    at callViewAction (core.js:10388)
    at execComponentViewsAction (core.js:10330)
    at Object.checkAndUpdateView (core.js:10153)
    at ViewRef_.push../node_modules/@angular/core/fesm5/core.js.ViewRef_.detectChanges (core.js:8534)
    at core.js:4411
    at Array.forEach (<anonymous>)
    at ApplicationRef.push../node_modules/@angular/core/fesm5/core.js.ApplicationRef.tick (core.js:4411)

如何解决此问题?

如果在运行时之前不想解析JSON文件,则需要通过HTTP获取JSON文件。但我想这没什么意义

有关如何加载JSON的更多信息,请参见:


尝试此链接:我尝试了此选项,但Angular 6中的键入文件可能不存在。通过HTTP编译,我发现了一个问题,我正在正确加载json,但在浏览器控制台中,我得到了我将添加到初始问题中的错误,我还把json放在了一起。@Eladerezador加载函数是什么样子的?我猜您正在尝试在加载JSON之前访问菜单。还请注意,从性能角度来看,导入要好得多:因此,如果构建后不必编辑此JSON,请改用导入。
{
  "imgsesion": "fa_closesesion.png",
  "texthome": "volver a la home",
  "logo": "fa_logo.png",
  "contact": "fainfo@gmail.com",
  "menu": {
    "background": "orange",
    "link1": "ESCRITOR",
    "link2": "MÚSICO",
    "link3": "AYUDA ADMIN",
    "submenu": {
      "link1": {
        "text1": "novelas",
        "text2": "obras de teatro"
      },
      "link2": {
        "text1": "compositor",
        "text2": "intérprete"
      }
    }
  }
}