source

ES2015 모듈에서 "이 구문을 사용하려면 가져온 도우미가 필요하지만 모듈 'tslib'을 찾을 수 없습니다"

bestscript 2023. 2. 16. 22:01

ES2015 모듈에서 "이 구문을 사용하려면 가져온 도우미가 필요하지만 모듈 'tslib'을 찾을 수 없습니다"

를 준비했습니다.tslib 도우미에 : TS 도우미

패키지.json

{
  "name": "foo",
  "scripts": {
    "build": "tsc"
  },
  "dependencies": {
    "tslib": "^1.9.3"
  },
  "devDependencies": {
    "typescript": "^3.1.3"
  }
}

tsconfig.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "es2015",
    "outDir": "./lib",
    "rootDir": "./src",
    "importHelpers": true,
    "strict": true,
    "experimentalDecorators": true
  }
}

src/index.ts

function a(target: any) {
    return target;
}

@a
export class Foo {}

그 결과, 다음의 에러가 발생합니다.

src/index.ts: 5:1 - 오류 TS2354: 이 구문에 Import된 도우미가 필요하지만 모듈 'tslib'을 찾을 수 없습니다.

한편, 「 」는, 「 」, 「 」의 사이에lib/index.js컴파일 되어 있습니다.

import * as tslib_1 from "tslib";
function a(target) {
    return target;
}
var Foo = /** @class */ (function () {
    function Foo() {
    }
    Foo = tslib_1.__decorate([
        a
    ], Foo);
    return Foo;
}());
export { Foo };

이 문제는 어떻게 해결할 수 있을까요?

다음과 같은 방법을 시도해 보십시오.

npm install tslib --save-dev

또는 (내가 방금 한) noob 실수를 수정하기 위해:

npm i

으로 '아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아,아git clean -fxd ,, 습, 습, 없은 없다.npm i가 모두npm 키키 do do do do do hh do do 도도도도도 도도도도도도도도!

문제는 에디터가 프로젝트와 다른 TypeScript 버전을 사용하고 있다는 것이었습니다.

이 문제를 해결하려면:

  1. 명령 팔레트를 엽니다(Mac에서는 Cmd+Shift+P).대상 파일은 .ts 또는 .tsx여야 합니다.그렇지 않으면 버전 변경 옵션이 표시되지 않습니다.)
  2. "TypeScript: "를 선택합니다.TypeScript Version을 선택합니다.."
  3. VSCode의 TS 버전과 Workspace(프로젝트) 버전이 표시됩니다. 이 버전을 선택하십시오.

또는 아래 바의 버전 번호가 표시되어 있으면 클릭합니다.

「 」에 아래 합니다.tsconfig.json

"compilerOptions": {
    //...rest parameters

    "baseUrl": "./",
    "paths": {
      "tslib" : ["path/to/node_modules/tslib/tslib.d.ts"]
    },

를 최신 문제는 수정되었습니다★★★★★★★★★★★★★★★★★★★★★★★를 인스톨 하고 있었습니다.1.9.3및 「」로 되었습니다.1.10.0.

제 경우 tslib는 이미 설치되어 있고, 다른 컴포넌트는 정상적으로 동작하고 있는 반면, 이 에러는 1개의 컴포넌트에 대해서만 발생하고 있습니다(빌드와 기능).방금 vscoode를 다시 시작했는데 사라졌어요.그렇기 때문에 다른 사람이 제안한 것을 실행한 후에도 오류가 남아 있다면 시도해 보세요.

오류는 산발적으로 발생하지만 "node_modules" 폴더의 파일을 편집하여 발생한 것 같습니다.

삭제했습니다

  • "node_module" 폴더
  • "filen-lock.json" 파일

실행... "npm install"

이제 작동한다.

메모: 파일을 삭제하기 전에 "npm install"을 실행해도 문제가 해결되지 않았습니다.

참조가 나타내는 바와 같이 모듈 분해능은 다음의 경우에만 노드모드로 설정됩니다."modules": "commonjs"의 경우 되어 있습니다."modules": "es2015":

모듈 해결 전략에는 다음 두 가지가 있습니다.노드와 클래식--moduleResolution 플래그를 사용하여 모듈 해결 전략을 지정할 수 있습니다.지정하지 않으면 기본값은 --module AMD | System | ES2015 또는 Node 입니다.

classic 모드는 다음 사항을 인식하지 못하기 때문에node_modules컴파일러가 해결할 수 없습니다.tslib모듈.

moduleResolutionES2015 모듈에 대해 명시적으로 설정해야 합니다.

...
"module": "es2015",
"moduleResolution": "node",
...

이 경우, 의 삭제 또는 설정importHelpers컴파일러 옵션false문제를 해결했습니다.

{
  "compilerOptions": {
    ...
    "importHelpers": false, // Or remove this
    ...
  }
}

패키지 내 tslib의 의존관계 및 devDependencies를 업데이트합니다.json

{
   dependencies:{
     "tslib": "1.10.0",
   },
   devDependencies:{
     "tslib": "1.10.0",
   }
}

내 경우 오류Cannot find module 'tslib'특수 건설업자에 의해 야기되었다@nrwl/node:buildNodeJS 서버에서 nrwl/nx 모노레포 패턴을 응용 프로그램 중 하나로 사용하고 있습니다.

그것은 포함되지 않았다.tslib컴파일 출력에 표시됩니다.설정"externalDependencies": "none"의 실제 가동 빌드 구성에서angular.json문제를 해결했습니다.크레딧은 https://github.com/nrwl/nx/issues/2625 @vincastl로 보내드립니다.

이 문제를 해결하기 위해 노력한 첫 번째 게시물이기 때문에 여기에 게시하는 것은 아마도 저 혼자만이 아닐 것입니다.

npm i -g tslib

이것으로 내 문제는 해결되었다.-g가 없으면 효과가 없었습니다.

npm 설치

새 프로젝트나 리포지토리를 처음 열 때 이 오류가 나타나는 경우 앱의 필수 모듈을 아직 설치하지 않은 것일 수 있습니다.

앱 디렉토리에서 다음을 실행합니다.

npm install

저도 같은 문제에 직면해 있었는데 다음 명령으로 해결되었습니다!

npm install -D tslib@latest

나는 이 문제에 직면했다jest(+vuejs 및 모노레포 구조).모든 앱은 정상적으로 동작하지만 유닛 테스트에서는 동작하지 않습니다.

따라서 두 가지 작업을 수행해야 합니다.

  1. tsconfig.json:
    "compilerOptions": {
      "paths": {
        "tslib" : ["path/to/node_modules/tslib/tslib.d.ts"]
    }
  1. jest.config.js:
    moduleNameMapper: {
      'tslib': '<rootDir>/path/to/node_modules/tslib/tslib.js'
    }

프로젝트에서는, 간단하게 실행해 주세요.

npm i tslib 

여기에는 모든 타이프스크립트 도우미 기능이 포함되어 있습니다.

업그레이드, tslib 버전 2.00.0

포장되어 있습니다.json "tslib" : "^2.0.0"이어야 합니다.

한 케이스가 있었는데, 유일한 해결방법은 이걸 수동으로 추가하는 것 뿐이었습니다.package.json:

"tslib": "^2.3.1",

실행하다npm i나중에.

에서 삭제해야 합니다. "compilerOptions": { "importHelpers": true, }tsconfig.json의 경우

.csproj 파일에 다음 행을 추가합니다.<PropertyGroup>:

<TypeScriptCompileBlocked>True</TypeScriptCompileBlocked>

언급URL : https://stackoverflow.com/questions/52801814/this-syntax-requires-an-imported-helper-but-module-tslib-cannot-be-found-wit