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 19 년

2
폴리 필에서 IE11 섹션의 주석 처리를 제거하면 Edge, Chrome, Firefox 및 IE11에서 작동하는 것 같아서 행복합니다.
Helzgate

12
나는 제거해야 "module": "es2015"내에서 라인 tsconfig.app.json파일
ranbuch

5
@ranbuch, 나는 같은 문제가 있었지만 줄을 제거하지 않았고 그냥 변경했습니다 "module": "esnext".
Alfa Bravo

아직 업데이트 tsconfig.json 파일 이후에 같은 문제 이벤트에 직면
Gaurav 가르 왈

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

16

@Tony의 답변에 내 경험을 추가하고 싶습니다. 변경 tsconfig.json후에도 여전히 오류 (빨간색 밑줄)가 표시되었습니다. 편집기를 다시 연 후에 (VSCode를 사용했습니다) 빨간색 밑줄이 사라지는 것을 보았습니다.


tsconfig.app.json 파일이 없습니다. 하나 만들어야합니까?
Mark

네, 이쪽을 참고 해주세요. stackoverflow.com/questions/36916989/…
Tai JinYuan

매우 도움이되었습니다. 감사합니다 :)
Praveen Kumar Palai

1
IDEA Intelij에서도 동일한 문제가 발생했습니다. 프로젝트를 다시 열어야합니다.
NieMaszNic

네. 당신은 내 하루를 구했습니다.
Shailesh Pratapwar

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 단계 : "module": "es2015"에서 "module": "AMD"in tsconfig.json

2 단계 : 앱 루트 디렉터리에 새 파일 tsconfig.app.json을 만들고 Tony Ngo의 코드를 복사하여 붙여 넣으면이 문제가 해결됩니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.