【问题标题】:Unable to import NodeJS module into Typescript code无法将 NodeJS 模块导入 Typescript 代码
【发布时间】:2013-12-16 04:00:58
【问题描述】:

我有一个 NodeJS + ExpressJS,我正在迁移到 Typescript。我正在使用一个节点模块“强大”,我正在尝试为其创建一个打字稿定义。但是,由于错误,我无法将模块元素导入 Typescript 代码:

这是模块定义:

/// <reference path="../Main.d.ts" />

declare module "formidable" {
    export class Formidable {
        constructor();
        IncomingForm() : Form;
    }

    export class Form{
        encoding : String;
        uploadDir : String;
        keepExtensions : Boolean;
        type : String;
        parse(String, Function) : void;
    }

}

这是导入模块的文件“Upload.ts”

import fs = require('fs');
import path = require('path');
import formidableModule = require('formidable');
var formidable = new formidableModule.Formidable();

这是由 Typescript 编译器创建的“Upload.js”

var fs = require('fs');
var path = require('path');
var formidableModule = require('formidable');
var formidable = new formidableModule.Formidable();

这是错误

C:\Users\Me\WebstormProjects\Core\lib\Upload.js:5
var formidable = new formidableModule.Formidable();
                 ^
TypeError: undefined is not a function
    at Object.<anonymous> (C:\Users\Anjan\WebstormProjects\Core\lib\Upload.js:5:18)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (C:\Users\Anjan\WebstormProjects\Core\app.js:9:20)
    at Module._compile (module.js:456:26)
    at Object.Module._extensions..js (module.js:474:10)

Process finished with exit code 8

【问题讨论】:

    标签: node.js typescript


    【解决方案1】:

    不确定ts,但这是我导出整个类的方式(我遇到了同样的问题)

    module.exports.formidable = {
        method1: function(req){
            /// code here
        },
        method2: function(param1, param2) {
                ///code here
        }
    }
    

    【讨论】:

    • 这是在没有 TS 的 NodeJS 中执行此操作的方法 - 这对我来说任何方面都很好。但是,因为我正在迁移到 TS,所以我试图弄清楚如何在 TS 中做到这一点。
    【解决方案2】:

    我认为您对 Formidible 的定义不正确。

    基本上你在Formidable 类上没有定义我在https://github.com/felixge/node-formidable#api 文档中看不到这一点

    也许https://github.com/felixge/node-formidable#formidableincomingform

    var form = new formidable.IncomingForm()
    

    【讨论】:

      猜你喜欢
      • 2012-10-09
      • 2021-11-28
      • 2020-06-06
      • 2017-01-12
      • 1970-01-01
      • 2020-07-23
      • 2021-12-08
      • 1970-01-01
      • 2017-03-15
      相关资源
      最近更新 更多