在Node.js TypeScript应用中,define未定义

14

我正在使用TypeScript开发Node.js应用程序,其中我编写了一个名为server.js的文件,代码如下:

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')}!`);
});

我已经使用了Gulp进行转译,生成的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

但是当我运行这个文件时,会出现“define未定义”的错误。

如有任何错误,请指正。

在此输入图片描述

2个回答

24

如果你正在编写一个完全在Node.js中运行的应用程序,当你编译TypeScript文件时,应该使用“commonjs”模块而不是AMD模块。

如果你正在编写一个既可以在Node.js中运行,又可以在浏览器中运行的应用程序,当你编译TypeScript文件时,应该使用 “umd”模块而不是AMD模块。

因此,你需要更改传递给Gulp TypeScript编译器的配置对象,以使用{ module: "commonjs" }{ module: "umd" }


4
我猜你需要一个 amd-loader,一旦安装了它,你就可以在你的项目中使用 require("amd-loader");
npm install amd-loader
require("amd-loader");

以下是链接:

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


我有一个已定义但尚未加载的模块(如其“loaded”属性所示)。我该如何等待它加载? - phreed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接