[javascript] Angular 8-지연로드 모듈 : 오류 TS1323 : ‘–module’플래그가 ‘commonjs’또는 ‘esNext’인 경우에만 동적 가져 오기가 지원됩니다.

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’인 경우에만 지원됩니다.



답변

동적 가져 오기를 사용하고 있으므로 코드를 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"
  ]
}


답변

@Tony의 anwser에 추가하기 만하면 tsconfig.app.json에서 동일한 작업 ( “module”: “esnext”로 변경)을 수행해야 할 수도 있습니다. 제 경우에는 tsconfig.json이 이미 esnext를 모듈로 사용하고 있었지만 tsconfig.app.json은 여전히 ​​es2015를 사용하고 있었기 때문에이 오류가 발생했습니다.


답변

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


답변

나는이 작업을 수행 할 수있는 적절한 방법 조정할 생각 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.


답변

다음 단계를 수행하여이 오류를 해결합니다. 1 단계 : “module”: “es2015″에서 “module”: “AMD”in tsconfig.json

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


답변