[node.js] nodejs는 TypeScript 파일 내부에 필요합니다.

클래스 node_modules내 에서 일반 NodeJS 모듈 (에서 )을 어떻게로드 TypeScript합니까?

다음 .ts을 포함하는 파일 을 컴파일하려고 할 때 :

var sampleModule = require('modulename');

이 범위에서는 사용할 수 없다는 컴파일러 프롬프트가 필요합니다. (해당 줄은 파일의 시작 부분에 있습니다).



답변

Typescript는 기호를 찾을 수 없을 때 항상 불평합니다. 컴파일러는 기본에 대한 정의의 세트와 함께 제공 window, document라는 파일에 지정 등 lib.d.ts. require이 파일에서 grep을 수행 하면 함수에 대한 정의를 찾을 수 없습니다 require. 따라서이 함수는 다음 declare구문을 사용하여 런타임에 존재할 것임을 컴파일러에게 알려야 합니다.

declare function require(name:string);
var sampleModule = require('modulename');

내 시스템에서 이것은 잘 컴파일됩니다.


답변

올바른 구문은 다음과 같습니다.

import sampleModule = require('modulename');

또는

import * as sampleModule from 'modulename';

그런 다음 TypeScript를 --module commonjs.

패키지가 index.d.ts파일과 함께 제공 package.json되지 않고 "typings"속성 tsc이 없으면 무엇을 'modulename'참조 하는지 알지 못한다고 짖 습니다. 이를 위해 http://definitelytyped.org/ 에서 .d.ts파일 을 찾 거나 직접 작성해야합니다.

Node.js 용 코드를 작성하는 경우 http://definitelytyped.org/node.d.ts파일 도 필요합니다 .


답변

가장 좋은 해결책은 Node의 유형 정의 사본을 가져 오는 것입니다. 이것은뿐만 아니라 모든 종류의 종속성 문제를 해결할 것 require()입니다. 이것은 이전에와 같은 패키지를 사용하여 수행 typings되었지만 Mike Chamberlain이 언급했듯이 Typings는 더 이상 사용되지 않습니다. 현대적인 방법은 다음과 같습니다.

npm install --save-dev @types/node

컴파일러 오류를 수정할뿐만 아니라 IDE에 Node API의 정의도 추가합니다.


답변

TypeScript에서 노드 함수에 액세스하려면 타이핑을 사용하십시오.

typings install env~node --global

타이핑이 없으면 ? 설치하십시오 :

npm install typings --global


답변