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

2024-04-30

我正在尝试启动并运行我的第一个 TypeScript 和 DefinelyTyped 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') line.

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 文件似乎工作正常,因此我可以忽略该错误。但我很高兴知道为什么会发生这个错误以及我做错了什么。


又快又脏

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

declare var require: any

打字稿 2.x

如果您使用 TypeScript 2.x,则不再需要安装 Typings 或 Definely Typed。只需安装以下软件包即可。

npm install @types/node --save-dev

声明文件的未来 (6/15/2016) https://blogs.msdn.microsoft.com/typescript/2016/06/15/the-future-of-declaration-files/

像 Typings 和 tsd 这样的工具将继续工作,我们将继续努力 与这些社区一起确保平稳过渡。

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

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

确保该文件位于src文件夹,并且没有根应用程序文件夹中的文件夹。

默认情况下,@types 下的任何包都已包含在您的构建中unless您已指定其中一个选项。阅读更多 https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#types-typeroots-and-types

打字稿 1.x

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

安装打字

npm install typings -g --save-dev

从DefinitelyType 的存储库安装 requireJS 类型定义

typings install dt~node --save --global

Webpack

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

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

更新你的tsconfig.json与以下内容compilerOptions:

"types": [
      "webpack-env"
    ]

这可以让你做require.ensure以及其他 Webpack 特定功能。

角度 CLI

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

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

"compilerOptions": {
    // other options
    "types": [
      "node"
    ]
  }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TypeScript 出现错误 TS2304:找不到名称“require” 的相关文章

随机推荐

  • 生成实体密钥

    我第一次对 Entity Framework 4 感到失望 事实证明 当 SQL CE 与 EF4 一起使用时 不支持自动生成主键 http social msdn microsoft com forums en US sqlce thre
  • 二分图中最小顶点覆盖算法

    我正在尝试找出一种算法来查找二分图的最小顶点覆盖 我正在考虑一个解决方案 将问题减少到二分图中的最大匹配 众所周知 可以使用从 bip 创建的网络中的最大流量来找到它 图形 最大匹配 M 应确定最小匹配 顶点覆盖 C 但我无法处理选择顶点来
  • 关于 JavaScript for() 循环巫毒

    在相当长的一段时间里 我一直有这样的印象 for循环可能存在solely采用以下格式 for INITIALIZER STOP CONDITION INC DEC REMENTER CODE 然而 这是最绝对事实并非如此 看看这个 Java
  • `SwaggerRequestExample` 被忽略

    当我向 API 添加 swagger 时 我想要获取默认值和响应示例 我添加了 NuGet 包并尝试遵循本教程 https mattfrear com 2016 01 25 generating swagger example reques
  • Shell Linux:grep 带有 NULL 字符的精确句子

    我有一个像这样的文件 key 0value n akey 0value n key2 0value n 我必须创建一个以单词作为参数的脚本 我必须返回具有与参数完全相同的键的每一行 I tried grep aF key x0 但 grep
  • python raw_input 带有包含字符串的重音符号的奇怪行为

    我正在编写一个程序 要求用户输入包含重音符号的输入 测试用户输入字符串以查看其是否与程序中声明的字符串匹配 如下所示 我的代码无法正常工作 code coding utf 8 testList m myInput raw input ent
  • 有没有办法在网站中嵌入维基百科文章并设置其样式?

    我想做的基本上是一个 div 元素 其中包含维基百科文章的打印友好版本 我使用 iframe 来嵌入文章并且它可以工作 尽管我无法设置文档的样式 我想这是因为 iframe 内容不在我的域中并且我没有编辑权限 有没有办法在加载 iframe
  • NPM 安装“在 M1 芯片上找不到模块‘node-darwin-arm64/package.json’”

    我知道这个问题已经被问到了不同的版本 但我还没有看到一个不涉及使用 Rosetta 安装或使用 zsh 伪造架构的解决方案 我使用 bash 并希望尽可能不处理 Rosetta 我是一个节点新手 正在努力找出失败的原因 节点 v16 14
  • 使用 ajaxFileUpload 上传具有不同文件 ID 的多个文件

    我正在尝试以同一表单上传多个文件 多个文件应该位于不同的字段中 我对单个文件使用 ajaxfileuploader 并使用 MultipartHttpServletRequest 接收它 它成功了 I used ajaxFileUpload
  • 如何使用 Vapor 3 处理多部分请求

    我是一名 Vapor 初学者 我选择从 Vapor 3 rc 开始 因为它似乎破坏了 Vaport 2 的更改 不幸的是 目前还没有完整的文档 我目前正在尝试将一个简单的 txt 文件从 Postman 上传到我的 Vapor 3 本地服务
  • 使 QLabel 可点击

    我有一个充满 QPixmap 的 Qlabel 我想在单击该标签后启动一个进程 函数 我扩展了 QLabel 类 如下所示 from PyQt5 QtCore import from PyQt5 QtWidgets import from
  • python celery - 导入错误:没有名为 _curses 的模块 - 尝试运行 manage.py celeryev 时

    背景 视窗 7 x 64 Python 2 7 姜戈1 4 Celery 与 Redis 捆绑包 在尝试运行 manage py celeryev 时 我在终端中收到以下错误 import curses File c Python2 lib
  • 使用 LinkedIn REST API 更新个人资料

    是否可以通过 LinkedIn API 更新个人资料的教育 专业和 或经验 我可以正常进行正常的 GET 调用 我在这里问是因为他们网站上的文档没有产生任何结果 而 Stackoverflow 会有更多的实践经验 编辑 进一步的搜索使我发现
  • 懒惰评估不那么懒惰吗?

    我一直听说 C 使用惰性求值 所以对于某些代码 比如if true DoExpensiveOperation 将返回true不执行DoExpensiveOperation 在面试测试中我看到了以下问题 static bool WriteIf
  • 在PC上的Firefox上模拟Android的Webview?

    作为我的软件开发工作 针对 Android 的一部分 我需要在通过 Android 的 WebView 查看时检查大量 HTML 页面的内容 到目前为止 我已经能够通过将 HTML 内容转储到文件中来实现这一点 data data
  • 在链接服务器上执行 SP 并将其放入临时表中

    需要有关以下问题的一些帮助 Case 1 存储过程位于服务器 1 上 调用来自服务器 1 declare tempCountry table countryname char 50 insert into tempCountry exec
  • AspectJ - 接口实现方法的切入点

    我有 SomeInterface 的几个实现 问题是 在 SomeInterface 的所有实现中 executeSomething 方法的切入点是什么 public class SomeImplementation implements
  • 为什么 mongoDB 节点驱动程序会创建不需要的连接?

    当我尝试使用版本 3 6 0 中的 mongodb Nodejs 本机驱动程序建立与数据库的单个 mongodb 连接时 遇到了一种奇怪的问题 我的想法是在所有客户端会话中只打开一个连接 并在我的 Express 服务器中的不同路由中重用它
  • 是否可以在 Android 或 Blackberry 上运行小程序?

    Java站点是这样的java com http www java com says KVM 移动设备的虚拟机 与 JVM Java 虚拟机 相对应 它用于在移动设备上运行用 Java 技术编写的小程序和应用程序 KVM 必须由制造商安装 它
  • TypeScript 出现错误 TS2304:找不到名称“require”

    我正在尝试启动并运行我的第一个 TypeScript 和 DefinelyTyped Node js 应用程序 但遇到了一些错误 当我尝试转译简单的 TypeScript Node js 页面时 收到错误 TS2304 找不到名称 requ