如何node_modules
从类中加载常规 NodeJS 模块(来自)TypeScript
?
当我尝试编译.ts
包含以下内容的文件时:
var sampleModule = require('modulename');
编译器提示我不能在这个范围内使用 require。(该行位于文件的开头)。
如何node_modules
从类中加载常规 NodeJS 模块(来自)TypeScript
?
当我尝试编译.ts
包含以下内容的文件时:
var sampleModule = require('modulename');
编译器提示我不能在这个范围内使用 require。(该行位于文件的开头)。
当找不到符号时,Typescript 总是会抱怨。编译器带有一组默认定义window
,document
这些定义在一个名为lib.d.ts
. 如果我在这个文件中做一个 grep ,require
我找不到函数的定义require
。因此,我们必须自己告诉编译器这个函数将在运行时使用以下declare
语法存在:
declare function require(name:string);
var sampleModule = require('modulename');
在我的系统上,这编译得很好。
正确的语法是:
import sampleModule = require('modulename');
或者
import * as sampleModule from 'modulename';
然后用--module commonjs
.
如果包没有附带index.d.ts
文件并且它package.json
没有"typings"
属性,tsc
则会吠叫它不知道'modulename'
指的是什么。为此,您需要在http://definitelytyped.org/.d.ts
上为它找到一个文件,或者自己编写一个。
如果您正在为 Node.js 编写代码,您还需要node.d.ts
来自http://definitelytyped.org/的文件。
最好的解决方案是获取 Node 类型定义的副本。这将解决各种依赖问题,不仅require()
. 这以前是使用类似的包完成的typings
,但正如 Mike Chamberlain 所提到的,不推荐使用 Typings。现代的方式是这样做的:
npm install --save-dev @types/node
它不仅会修复编译器错误,还会将 Node API 的定义添加到您的 IDE。
使用类型从 TypeScript 访问节点函数:
typings install env~node --global
如果你没有打字安装它:
npm install typings --global
加载打字稿模块时,我使用带有扩展名的模块名称,即“.ts”
const sampleModule = require('modulename.ts');
仅供参考,在我的情况下,“node”命令(v14.17.1)直接使用“.ts”文件而不生成“*.js”文件。