【问题标题】:Typescript can't find modules打字稿找不到模块
【发布时间】:2013-12-30 18:58:23
【问题描述】:

我在 Typescript 的一个文件(upload.ts)中有一个导出的模块,我无法在没有错误的情况下导入另一个文件(application.ts)。另外,我无法导入 ExpressJS。

这里是 Upload.ts

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

var fs = require('fs');
var path = require('path');
var formidable = require('formidable');

export class Upload{

    public parse(req, res, next) {
       ...
    }

    public save(req, res, next) {
       ...
    }

    public respond(req, res, next) {
       ...
    }

    public errors(err, req, res, next) {
       ...
    }
};

这里是 application.ts

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

var http = require("http");
import express = require("express");
import upload = require("Upload");
var upload = new upload.Upload();

var app = express.express();
var HOST = "localhost";
var PORT = 8080;

app.use(express.logger());
app.use(app.router);

var app = express.express(); 代码抛出错误:未解析的函数或方法表示。我已经从 https://github.com/borisyankov/DefinitelyTyped/tree/master/express 导入了 express.d.ts

这是错误:

module.js:340
    throw err;
          ^
Error: Cannot find module 'upload'
    at Function.Module._resolveFilename (module.js:338:15)
    at Function.Module._load (module.js:280:25)
    at Module.require (module.js:364:17)
    at require (module.js:380:17)
    at Object.<anonymous> (C:\Users\Me\WebstormProjects\untitled\server\main.js:12:14)
    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 Function.Module.runMain (module.js:497:10)

这是引用两者的头文件:

/// <reference path="upload.ts" />
/// <reference path="node.d.ts" />
/// <reference path="application.ts" />
/// <reference path="express.d.ts" />

【问题讨论】:

    标签: express typescript


    【解决方案1】:

    你需要:

    • 确保将express.d.tsnode.d.ts 都放入您的项目目录中,靠近您的应用程序文件
    • 将它们导入您的应用程序

    例子:

    /// <reference path="libs/express.d.ts" />
    /// <reference path="libs/node.d.ts" />
    
    import http = require("http");
    import express = require("express");
    import upload = require("Upload");
    
    var upload = new upload.Upload();
    var app = express();
    

    Upload 模块可以以类似的方式引用。 顺便说一句,你的代码看起来更像 javascript 然后 typescript

    【讨论】:

    • 其实我已经做到了。有一个公共头文件,所有文件都引用它,然后又引用所有文件。我正在从 Javascript 过渡到 Typescript
    猜你喜欢
    • 2021-01-07
    • 2018-06-27
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 2017-08-26
    相关资源
    最近更新 更多