当前位置: 首页 > 知识库问答 >
问题:

TypeScript获取错误TS2304:找不到名称“Required”

邓深
2023-03-14

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

当我尝试传输一个简单的TypeScript node.js页面时,我收到错误“TS2304:无法找到名称'require'”。我已经阅读了其他几次发生在Stack ;溢出上的此错误,我认为我没有类似的问题。我正在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文件似乎运行良好,因此我可以忽略该错误。但如果知道为什么会出现这个错误,以及我做错了什么,我会很感激。

共有2个答案

訾旭
2023-03-14

对于Typescript2.x,现在有两个步骤:

>

  • 安装定义require的包。例如:

    npm install @types/node --save-dev
    

    告诉TypeScript将其全局包含在tsconfig.json中:

    {
        "compilerOptions": {
            "types": ["node"]
        }
    }
    

    第二步只有在需要访问全局可用函数(如require)时才是重要的。对于大多数包,您应该只使用import package from'package'模式。不需要在上面的tsconfig.json类型数组中包含每个包。

  • 郎成弘
    2023-03-14

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

    declare var require: any
    

    如果您使用的是TypeScript2.x,则不再需要安装类型或绝对类型。只需安装以下软件包。

    npm install @types/node --save-dev
    

    申报档案的未来(6/15/2016)

    类型化和tsd等工具将继续有效,我们将与这些社区一起工作,以确保平稳过渡。

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

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

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

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

    使用类型(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
    

    CompilerOptions下使用以下内容更新tsconfig.json:

    "types": [
          "webpack-env"
        ]
    

    这允许您执行require.insure和其他Webpack特定的函数。

    通过CLI,您可以按照上面的Webpack步骤,将“types”块添加到tsconfig.app.json中。

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

    "compilerOptions": {
        // other options
        "types": [
          "node"
        ]
      }
    
     类似资料:
    • 问题内容: 我正在尝试启动并运行我的第一个TypeScript和DefinitelyTyped Node.js应用程序,并且遇到一些错误。 尝试转换简单的TypeScript Node.js页面时,出现错误“ TS2304:找不到名称’require’”。我已经阅读了Stack Overflow上多次出现此错误的信息,但我认为我没有类似的问题。我在shell提示符下运行命令: 该文件的内容是: 错

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

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

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

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

    • 我已经广泛地搜索了这个问题,但没有找到任何修复它的方法。我正在尝试使用webpack来运行单个jasmine测试。我试图在Angular网站上遵循教程,但它...不是真的正确或完整。 null