nodejs需要在TypeScript文件中

Zde*_*cek 88 node.js typescript

如何node_modulesTypeScript类中加载常规NodeJS模块(from )?

当我尝试编译.ts包含以下内容的文件时:

var sampleModule = require('modulename');
Run Code Online (Sandbox Code Playgroud)

编译器提示我不能在此范围内使用require.(该行位于文件的开头).

Val*_*tin 95

打字稿在无法找到符号时总会抱怨.编译器附带一组默认定义window,document并在名为的文件中指定lib.d.ts.如果我require在这个文件中执行grep,我找不到函数的定义require.因此,我们必须告诉编译器这个函数将在运行时使用以下declare语法存在:

declare function require(name:string);
var sampleModule = require('modulename');
Run Code Online (Sandbox Code Playgroud)

在我的系统上,这编译得很好.

  • 谢谢.这适用于所有未声明的函数.我发现更好的解决方案是从typescript样本中获取node.d.ts并引用它.比你拥有一切.还有express.d.ts. (23认同)
  • 我想你也可以做`import sampleModule = module('modulename')` (3认同)

Jes*_*sse 48

正确的语法是:

import sampleModule = require('modulename');
Run Code Online (Sandbox Code Playgroud)

要么

import * as sampleModule from 'modulename';
Run Code Online (Sandbox Code Playgroud)

然后用--module commonjs.编译你的TypeScript .

如果包没有附带index.d.ts文件而且它package.json没有"typings"属性,那么tsc会发出它不知道'modulename'引用的内容.为此,您需要.d.tshttp://definitelytyped.org/上找到它的文件,或者自己编写一个文件.

如果您正在为Node.js编写代码,您还需要http://definitelytyped.org/中node.d.ts文件.


rha*_*iso 40

最好的解决方案是获取Node的类型定义的副本.这不仅会解决各种依赖问题require().这是以前使用类似的软件包完成的typings,但正如Mike Chamberlain所说,Typings已被弃用.现代的方式是这样做:

npm install --save-dev @types/node
Run Code Online (Sandbox Code Playgroud)

它不仅会修复编译器错误,还会将Node API的定义添加到IDE中.