TypeScript 出现错误 TS2304:找不到名称“需要”

新手上路,请多包涵

我正在尝试启动并运行我的第一个 TypeScript 和 DefinedTyped Node.js 应用程序,但遇到了一些错误。

当我尝试转译一个简单的 TypeScript Node.js 页面时,我收到错误“TS2304:找不到名称 ‘require’”。我已经阅读了 Stack Overflow 上其他几次出现此错误的情况,但我认为我没有类似的问题。我在 shell 提示符下运行命令:

 tsc movie.server.model.ts.

这个文件的内容是:

 'use strict';

/// <reference path="typings/tsd.d.ts" />

/*    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 文件的内容是:

 /// <reference path="node/node.d.ts" />
/// <reference path="requirejs/require.d.ts" />

.d.ts 文件引用放置在适当的文件夹中,并通过以下命令添加到 typings/tsd.d.ts:

 tsd install node --save
tsd install require --save

生成的 .js 文件似乎工作正常,所以我可以忽略该错误。但我会很感激知道为什么会发生这个错误以及我做错了什么。

原文由 JerryKur 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2k
2 个回答

又快又脏

如果您只有一个使用 require 的文件,或者您出于演示目的这样做,您可以在 TypeScript 文件的顶部定义 require。

 declare var require: any

打字稿 2.x

如果您使用的是 TypeScript 2.x,则不再需要安装 Typings 或肯定类型。只需安装以下软件包。

 npm install @types/node --save-dev

申报文件的未来 (6/15/2016)

Typings 和 tsd 等工具将继续工作,我们将与这些社区合作以确保顺利过渡。

验证或编辑您的 src /tsconfig.app.json 使其包含以下内容:

 ...
"types": [ "node" ],
"typeRoots": [ "../node_modules/@types" ]
...

确保是 src 文件夹中的文件,而不是根应用程序文件夹中的文件。

默认情况下,@types 下的任何包都已包含在您的构建中 ,除非 您指定了这些选项中的任何一个。 阅读更多

打字稿 1.x

使用类型(DefinitelyTyped 的替代品),您可以直接从 GitHub 存储库中指定定义。

安装类型

npm install typings -g --save-dev

从DefinitelyType 的repo 安装requireJS 类型定义

typings install dt~node --save --global

网页包

如果您使用 Webpack 作为构建工具,则可以包含 Webpack 类型。

 npm install --save-dev @types/webpack-env

tsconfig.json 下更新您的 --- compilerOptions

 "types": [
      "webpack-env"
    ]

这允许您执行 require.ensure 和其他 Webpack 特定功能。

角 CLI

使用 CLI,您可以按照上面的 Webpack 步骤并将“类型”块添加到您的 tsconfig.app.json

或者,您可以使用预装的 node 类型。请记住,这将包括您的客户端代码中实际上不可用的其他类型。

 "compilerOptions": {
    // other options
    "types": [
      "node"
    ]
  }

原文由 cgatian 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您使用 Yarn v3 并在 VSCode 中看到此错误(找不到名称要求)或其他与节点相关的“找不到”错误,请确保您安装了 Yarn 的 VSCode sdk 插件并选择了 Typescript 的工作区版本。

安装 SDK 的命令:

 yarn dlx @yarnpkg/sdks

要设置 Typescript 版本:

  1. 选择一个打字稿文件
  2. 按 Command + Shift + P
  3. 打字稿:选择打字稿版本
  • 选择“使用工作区版本”

有关更多详细信息,请参阅 https://yarnpkg.com/getting-started/editor-sdks#vscode

原文由 Joshua Dyck 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题