当前位置: 首页 > 面试题库 >

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

方博学
2023-03-14
问题内容

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

Types / tsd.d.ts文件的内容是:

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

.d.ts文件引用放置在适当的文件夹中,并通过以下命令添加到Types / 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

声明文件的未来(6/15/2016)

诸如Typings和tsd之类的工具将继续起作用,我们将与这些社区一起工作,以确保顺利过渡。

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

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

确保该文件位于 src 文件夹中,而没有一个位于根应用程序文件夹中。

默认情况下,@ types下的任何软件包都已包含在您的内部版本中, 除非 您指定了这些选项之一。
阅读更多

TypeScript 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.ensureWebpack和其他特定于Web的功能。

角度CLI

使用CLI,您可以按照上面的Webpack步骤进行操作,然后将“ types”块添加到中tsconfig.app.json

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

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


 类似资料:
  • 我试图启动并运行我的第一个TypeScript和DefinitelyTyped Node.js应用程序,但遇到了一些错误。 当我尝试传输一个简单的TypeScript node.js页面时,我收到错误“TS2304:无法找到名称'require'”。我已经阅读了其他几次发生在Stack ;溢出上的此错误,我认为我没有类似的问题。我正在shell提示符下运行命令: 该文件的内容为: 在行上抛出错误。

  • 问题内容: 我正在尝试使用TypeScript在NodeJS中进行base64编码。 以下代码在JavaScript中可以正常工作。 当我在TypeScript中编写相同的内容并进行编译时,我得到Buffer is not found错误。 有人可以帮我在TypeScript中做同样的事情。 问题答案: 在顶部添加以下行: 它应该编译没有错误。 使用内置于库或其他全局对象中的节点需要声明,您可以像

  • 我是angular 2和typescript的新手,正在尝试为我的弹出窗口调用RocketLaunch函数。 如果我在弹出窗口外声明它不调用,但如果我在弹出窗口内移动它抛出此错误: 错误TS2304:找不到名称“$event” 提供以下相关代码和错误:

  • 问题内容: 我开始使用TypeScript编写AngularJS应用。我有这个简单的模块命令: 当我跑步时,我得到了: 我是否需要包括一些内容以使他们理解? 问候, 问题答案: 您可以通过告诉编译器“您对角度的全部了解”来简单地告诉编译器不再担心: 为了获得所有好的工具和类型检查,您需要提取Angular类型定义,以便编译器知道可用的东西。 如果您对自己喜欢的IDE使用Visual Studio或

  • 我正在构建一个有角度的Firebase web应用程序,由于一些复杂的查询,我开始从Firebase中寻找云函数。 我的项目看起来像: 我遵循了经典教程:https://firebase.google.com/docs/functions/get-started 但是使用Firebase部署仅功能时的问题: 任何想法?我做错什么了吗? 版本:“firebase”:“^5.0.4”firebase函

  • 当我在Task Run Explorer中编译时,我从一个大口中得到了这个错误,这很奇怪,因为我没有改变任何东西...无论如何,我在网上搜索,找到了一些解决方案,但都不起作用。 错误1 GulpuglifyError:无法缩小JavaScript 如果我做第二个解决方案,我会不会与兼容旧浏览器的问题?