it-source

"Module 'name'(모듈 '이름')이(가) 입력되지 않은 모듈로 확인됩니다.." 사용자 지정 TypeScript 정의 파일을 작성할 때

criticalcode 2023. 10. 23. 21:55
반응형

"Module 'name'(모듈 '이름')이(가) 입력되지 않은 모듈로 확인됩니다.." 사용자 지정 TypeScript 정의 파일을 작성할 때

TypeScript 정의를 찾을 수 없습니다.@type/{name}설치된 NodeJS 패키지 중 하나에 대해 다음을 작성하려고 시도합니다.d.ts파일을 제출하고 파일을 넣습니다.{project root}\typings폴더.이것이 제가 하는 거죠.

// My source code: index.ts
import Helper from 'node-helper-lib';


// My definition: \typings\node-helper-lib.d.ts
declare....(something else)

declare module 'node-helper-lib' {
   class Helper { ... }
   export = Helper;
}

그러나 Visual Studio Code는 이 오류를 계속 발생시켜 아래에 빨간색 선을 둡니다.declare module 'node-helper-lib':

[ts] 확대에서 모듈 이름이 잘못되었습니다.'node-helper-lib' 모듈은 '{project path}\node_modules\node-helper-lib\index.js'에서 유형 없는 모듈로 확인되며, 이 모듈은 증강할 수 없습니다.

도서관은 타이핑이 안 되어 있어서 타이핑을 추가해도 되는 게 아닌가요?

업데이트:

사용 중인 항목

  • 타입스크립트: 2.1.4
  • 비주얼 스튜디오 코드 : 1.9.1
  • 노드 JS: 6.9.4
  • 윈도우 10 x64

실제 해결책은 @paleo가 @hirikarate의 답변에서 언급한 것입니다.

모듈 신고 에 수입 신고를 해야 합니다.

예:

declare module 'node-helper-lib' {
   import * as SomeThirdParty from 'node-helper-lib';
   interface Helper {
       new(opt: SomeThirdParty.Options): SomeThirdParty.Type
   }
   export = Helper;
}

몇 번의 시행착오 끝에, 저는 그것을 발견했습니다.augmentation"다른 모듈 선언이 있는 동일한 파일의 모듈을 declaring한다."를 의미합니다.

따라서 우리가 비타입 서드 파티 자바스크립트 라이브러리에 대한 정의 파일을 작성하려면 하나만 있어야 합니다.declare module 'lib-name'해당 파일에서 'lib-name'은 라이브러리 이름과 정확히 일치해야 합니다(해당 패키지에서 확인 가능).json, "이름" 속성).

반면 타사 라이브러리에 이미 정의 파일이 있는 경우 .d.ts포함된 기능을 확장한 다음 추가 정의를 작성하는 다른 파일에 넣을 수 있습니다.이를 가리킵니다.augmenting.

예를 들어,

// These module declarations are in same file, given that each of them already has their own definition file.
declare module 'events' {
   // Extended functionality
}

declare module 'querystring' {
   // Extended functionality        
}

declare module '...' { ... }

누군가가 같은 질문을 할 때를 대비해서 발견물을 여기에 둡니다.그리고 제가 놓친 부분이 있다면 수정 부탁드립니다.

문제는 제가 모듈을 A/S로 선언하려고 했다는 것입니다..ts파일. 로 바꿨습니다..d.ts그리고 모든게 잘 작동했습니다.

저도 그 오류 메시지를 받고 있었습니다.문제는 모듈 선언이 포함된 기존의 타입 정의 파일에 다른 모듈을 선언하려고 했다는 것입니다.새 모듈 선언을 새 파일로 옮긴 후 오류가 사라졌습니다.

저의 경우 npm 'node-apple-receipt-verify' 패키지에서 발생했습니다.

Invalid module name in augmentation. Module 'node-apple-receipt-verify' resolves to an untyped module at '/node_modules/node-apple-receipt-verify/index.js', which cannot be augmented.ts(2665)

작동하는 유일한 솔루션은 다음과 같이 설치하는 것입니다.

npm install --save-dev @types/node-apple-receipt-verify

언급URL : https://stackoverflow.com/questions/42388217/having-error-module-name-resolves-to-an-untyped-module-at-when-writing-cu

반응형