Angular 8 - Ленивые загрузочные модули: Ошибка TS1323: Динамический импорт поддерживается только в том случае, если флаг --module имеет значение «commonjs» или «esNext». - PullRequest
29 голосов
/ 30 мая 2019

Когда я обновил Angular с 7 до Angular 8, получаю ошибку для отложенной загрузки модулей

Я пробовал варианты, которые есть в руководстве по угловому обновлению

внесены следующие изменения:

До

    loadChildren: '../feature/path/sample- 
                         tage.module#SameTagModule'

* После 1013 *

   loadChildren: () => import('../feature/path/sample- 
                      tags.module').then(m => m.CreateLinksModule)

ошибка TS1323: динамический импорт поддерживается только при установленном флаге --module 'commonjs' или 'esNext'.

Ответы [ 2 ]

52 голосов
/ 30 мая 2019

Вы используете динамический импорт, поэтому вы должны изменить свой tsconfig.json таким образом, чтобы нацелить ваш код на esnext module

{
  "compileOnSave": false,
  "compilerOptions": {
    "baseUrl": "./",
    "outDir": "./dist/out-tsc",
    "sourceMap": true,
    "declaration": false,
    "module": "esnext", // add this line
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "importHelpers": true,
    "target": "es2015",
    "typeRoots": [
      "node_modules/@types"
    ],
    "lib": [
      "es2018",
      "dom"
    ]
  }
}

Также убедитесь, что у tsconfig.app.json нет модуля и целевого конфига что-то вроде этого

{
  "extends": "./tsconfig.json",
  "compilerOptions": {
    "outDir": "./out-tsc/app",
    "types": []
  },
  "include": [
    "src/**/*.ts"
  ],
  "exclude": [
    "src/test.ts",
    "src/**/*.spec.ts"
  ]
}
5 голосов
/ 31 мая 2019

Просто добавив в ответ @ Тони, вам также может потребоваться сделать то же самое (смените на «module»: «esnext») в файле tsconfig.app.json.В моем случае tsconfig.json уже использовал esnext в качестве модуля, но tsconfig.app.json все еще использовал es2015, и это вызвало эту ошибку.

...