【问题标题】:Using Github's Node-Trello in Ionic 2 - Error TS2304: Cannot find name 'require'在 Ionic 2 中使用 Github 的 Node-Trello - 错误 TS2304:找不到名称 'require'
【发布时间】:2016-11-24 16:45:32
【问题描述】:

从新蜜蜂到 ionic2、angular2 和对 Trello 的编程访问。

我想在 ionic 中使用这个包装器,但不能声明 node-trello 模块。

我已经安装了 node-trello:

npm install node-trello --save

更新了我的package.json: 请参阅我的 package.json “node-trello”的依赖项部分,版本为“^1.1.2”

{
    "dependencies": {
        "@angular/common": "2.0.0-rc.3",
        "@angular/compiler": "2.0.0-rc.3",
        "@angular/core": "2.0.0-rc.3",
        "@angular/http": "2.0.0-rc.3",
        "@angular/platform-browser": "2.0.0-rc.3",
        "@angular/platform-browser-dynamic": "2.0.0-rc.3",
        "es6-shim": "^0.35.0",
        "ionic-angular": "2.0.0-beta.10",
        "ionic-native": "1.2.4",
        "ionicons": "3.0.0",
        "minimatch": "^3.0.2",
        "node-trello": "^1.1.2",
        "reflect-metadata": "^0.1.3",
        "rxjs": "5.0.0-beta.6",
        "trello": "^0.5.1",
        "zone.js": "^0.6.12"
    }
}

按照作者在website 上所说的尝试过

var Trello = require("node-trello");

但尽管 /node-modules/node-trello 目录存在,但我收到以下错误:

TypeScript 错误:C:/workspace/.......etc...../Service.ts(26,22):错误 TS2304:找不到名称 'require'。

【问题讨论】:

    标签: angularjs typescript require ionic2 trello


    【解决方案1】:

    你正在使用打字稿,所以应该是

    import Trello = require("node-trello");
    

    import * as Trello from "node-trello";
    

    编辑:如果您的模块被正确加载,这应该在运行时工作,但是在编译期间它仍然会显示错误。要消除错误,您必须提供带有模块声明的打字稿。 通常你会从 npm 或 Typings 下载声明,但我没有为 node-trello 包找到它们,所以你必须提供你自己的。 您可以将其放入您的声明文件中:

    declare module "node-trello" {
        const value: any;
        export default value;
    }
    

    【讨论】:

    • 谢谢 Kuba 都试过了——它们也不起作用。两者都给出错误:TypeScript 错误:C:/workspace.....etc...../service.ts(3,25): Error TS2307: Cannot find module 'node-trello'.
    • 它在运行时有效吗?如果它有效并且找到了模块,则可以忽略此错误。为了使错误消失,您必须向 node-trello 库提供带有定义的打字稿。我不确定它们是否存在,如果不存在,您可以创建一个虚假的定义只是为了让 TS 高兴。您可以在定义文件中添加类似的内容: declare module "node-trello" { const value: any;导出默认值; }
    • 嗨库巴。否 - 错误仍然会停止生成包。
    • 嗨库巴。谢谢你的帮助。不 - 它没有运行,错误仍然会停止生成包。我将您的声明模块块插入到 index.d.ts 中,其中还有其他声明模块语句。现在不要在文件顶部的 require 或 import 行出现错误。在 gitlab 中使用 adunkman/node-trello,我假设我不需要行 var Trello = require("node-trello");但如果我将其注释掉,我会收到错误 TS2351:无法将“新”与类型缺少调用或构造签名的表达式一起使用。在删除评论时,我收到错误 TS2304:找不到名称“需要”。
    • 要强制 Typescript 即使出现错误也编译您的项目,请将 noEmitOnError: false 放入您的 tsconfig.json 文件。不要使用 var Trello = require("node-trello");在 Typescript 中,使用我在答案中编写的方法之一,否则它不会识别 require 子句。
    猜你喜欢
    • 2016-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-18
    • 2019-05-06
    • 2019-08-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多