TypeScript出现错误TS2304:无法找到名称'require'。
TypeScript出现错误TS2304:无法找到名称'require'。
我正在尝试运行我的第一个TypeScript和DefinitelyTyped Node.js应用程序,并遇到一些错误。
当我尝试转换一个简单的TypeScript Node.js页面时,我遇到错误“TS2304:找不到名称”require“”。我已经阅读了Stack Overflow上的几个类似错误的例子,但我认为我没有相似的问题。
我在shell提示符下运行以下命令:
tsc movie.server.model.ts.
这个文件的内容是:
'use strict'; /// /* movie.server.model.ts - definition of movie schema */ var mongoose = require('mongoose'), Schema = mongoose.Schema; var foo = 'test';
错误出现在var mongoose=require(\'mongoose\')
行。
typings / tsd.d.ts文件的内容为:</ p>
/// ///
引用的.d.ts文件已放置在正确的文件夹中,并通过以下命令添加到typings / tsd.d.ts中:
tsd install node --save tsd install require --save
生成的.js文件似乎工作正常,所以我可以忽略错误。但我想知道为什么会出现这个错误,以及我做错了什么。
快速而简单
如果您只有一个文件使用require,或者您的目的是为了演示,您可以在TypeScript文件的顶部定义require。
declare var require: any
TypeScript 2.x
如果您使用TypeScript 2.x,您不再需要安装Typings或Definitely Typed。只需安装以下软件包即可。
npm install @types/node --save-dev
类似Typings和tsd这样的工具将继续工作,我们将与这些社区合作,以确保平稳的过渡。
验证或编辑您的src/tsconfig.app.json,以使其包含以下内容:
... "types": [ "node" ], "typeRoots": [ "../node_modules/@types" ] ...
请确保该文件在src文件夹中而不是在根应用程序文件夹中。
默认情况下,除非指定了以下任一选项,否则在@types下的任何软件包都已包含在您的构建中。 阅读更多
TypeScript 1.x
使用typings(DefinitelyTyped的替代品)可以直接从GitHub存储库指定定义。
安装typings
npm install typings -g --save-dev
从DefinitelyType的存储库安装requireJS类型定义
typings install dt~node --save --global
Webpack
如果您使用Webpack作为构建工具,可以包含Webpack类型。
npm install --save-dev @types/webpack-env
在compilerOptions
下更新tsconfig.json
,包括以下内容:
"types": [ "webpack-env" ]
这允许您使用require.ensure
和其他Webpack特定的功能。
Angular CLI
使用CLI,您可以遵循上面的Webpack步骤,并将"types"块添加到您的tsconfig.app.json
中。
或者,您可以使用预安装的node
类型。请记住,这将在您的客户端代码中包含其他不真正可用的类型。
"compilerOptions": { // other options "types": [ "node" ] }