Angular 8-モジュールの遅延読み込み:エラーTS1323:動的インポートは、「-module」フラグが「commonjs」または「esNext」の場合にのみサポートされます


107

Angularを7からAngular 8に更新したとき、遅延読み込みモジュールでエラーが発生しました

私は角度アップグレードガイドにあるオプションを試しました

以下の変更を行いました:

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

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

エラーTS1323:動的インポートは、「-module」フラグが「commonjs」または「esNext」の場合にのみサポートされます。

回答:


205

動的インポートを使用しているため、コードをesnextモジュールにターゲティングするには、このようにtsconfig.jsonを変更する必要があります

{
  "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"
  ]
}

4
ng newデフォルトではこれを使用しません。理由はありますか?
Helzgate

2
Edge、Chrome、Firefox、IE11で動作するようですが、ポリフィルのIE11セクションのコメントを外すと満足です。
Helzgate、

12
ファイル"module": "es2015"からこの行を削除する必要がありましたtsconfig.app.json
ranbuch

5
@ranbuch、私は同じ問題を抱えていましたが、行を削除しませんでした、私はそれを"module": "esnext"同様に変更しました。
Alfa Bravo

tsconfig.jsonファイルを更新した後も同じ問題イベントに直面しています
Gaurav Aggarwal

25

@Tonyのanwserに追加するだけで、tsconfig.app.jsonでも同じことを行う必要があります( "module": "esnext"に変更)。私の場合、tsconfig.jsonはすでにesnextをモジュールとして使用していましたが、tsconfig.app.jsonはまだes2015を使用していたため、このエラーが発生しました。


3
両方のファイルに "module": "esnext"を追加することを避けることができます。これは、tsconfig.jsonに追加できますが、tsconfig.app.jsonには追加できません。これは、すでにtsconfig.jsonを拡張しているためです。
RajuPedda

14

@Tonyの答えに私の経験を追加したいだけです。変更後tsconfig.jsonもエラーが表示されました(赤い下線)。エディターを再度開いた(VSCodeを使用しました)、赤い下線が消えました。


tsconfig.app.jsonファイルがありません。作成する必要がありますか?
マーク

はい、参考にしてください。stackoverflow.com/questions/36916989/...
タイ金源

とても役に立ちました。ありがとう:)
Praveen Kumar Palai

1
IDEA Intelijでも同じ問題がありました。プロジェクトを再度開く必要があります。
NieMaszNic

12

これを行う適切な方法は、tsconfig.app.jsonではなく調整することですtsconfig.json

tsconfig.app.json

{
  "extends": "../tsconfig.json",
  "compilerOptions": {
    "outDir": "../out-tsc/app",
    "baseUrl": "./",
    "module": "esnext",
    "types": []
  },
  "exclude": [
    "test.ts",
    "**/*.spec.ts"
  ]
}

tsconfig.app.jsonAngular ワークスペースのルートの下にあるアプリ固有のTypescript構成ファイルです。あなたが持つ角度ワークスペース構築している場合、そのように存在する複数その中にアプリを、あなたがそのアプリケーションとの間の重なり(従って、冗長構成プロパティ記述することなく、各アプリケーションに対して別々に活字体の構成を調整することができるプロパティ)。tsconfig.app.jsonextends

技術的には、まったく必要ありませんtsconfig.app.json。あなたはそれを削除した場合は、配置する必要があります"module": "esnext"ではtsconfig.json。そのままにしておくと、が優先されるtsconfig.jsonため、で"module":"esnext"行を追加するだけで済みtsconfig.app.jsonます。


はい、モジュールを追加する必要がありました:tsconfig.jsonとtsconfig.app.jsonの両方に「esnext」
RDV

0

次の手順を実行して、このエラーを解決します。ステップ1:「モジュール」:「es2015」から「モジュール」:tsconfig.jsonの「AMD」

手順2:アプリのルートディレクトリに新しいファイルtsconfig.app.jsonを作成し、Tony Ngoのコードをコピーして貼り付けると、この問題は解決されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.