2016-01-08 113 views
6

我在打字稿上應用的NodeJS工作中,我已經寫了一個文件server.js休耕:定義打字稿的NodeJS應用程序沒有定義

import express = require('express'); 
import mongoose = require('mongoose'); 


let app=express(); 
app.set('port', process.env.PORT || 3000); // Set port to 3000 or the provided PORT variable 


/** 
* Start app 
*/ 
app.listen(app.get('port'), function() { 
    console.log(`App listening on port ${app.get('port')}!`); 
}); 

我必須用吞氣來traspile這其中產生的js文件爲

define(["require", "exports", 'express'], function (require, exports, express) { 
    var app = express(); 
    app.set('port', process.env.PORT || 3000); // Set port to 3000 or the provided PORT variable 
    /** 
    * Start app 
    */ 
    app.listen(app.get('port'), function() { 
     console.log("App listening on port " + app.get('port') + "!"); 
    }); 
}); 

//# sourceMappingURL=../map/server.js.map 

但是當我運行這個文件得到錯誤定義不是定義。

請糾正我,如果我做任何的錯誤。

enter image description here

回答

7

如果您正在編寫將在Node.js的純粹運行應用程序時,你應該用「CommonJS的」模塊,而不是AMD模塊,當你編譯你的TypeScript文件。

如果你正在編寫一個都將在Node.js的,並在瀏覽器中運行的應用程序,你應該使用「UMD」模塊,而不是AMD模塊,當您編譯打字稿文件。

因此,您需要將您傳遞給Gulp TypeScript編譯器的配置對象更改爲使用{ module: "commonjs" }{ module: "umd" }

1

我猜你需要在這裏的amd-loader,一旦安裝,你可以再require("amd-loader");在您的項目。

npm install amd-loader 
require("amd-loader"); 

下面的鏈接:

https://github.com/ajaxorg/node-amd-loader

+0

我有一個定義但尚未加載(通過其'loaded'屬性指示的模塊。我如何等待它加載? – phreed