首页 文章

Node.js的打字稿AMD模块

提问于
浏览
2

我有以下使用AMD模块编译的Typescript文件:

import tsmx = module("../TSMX/tsmx");
tsmx.createServer(1337);

产生以下js:

define(["require", "exports", "../TSMX/tsmx"], function(require, exports, __tsmx__) {
    var tsmx = __tsmx__;

    tsmx.createServer(1337);
})

当我尝试在Node.js中加载它时,我收到以下错误:

(function(exports,require,module,__ filename,__ dirname){define([“require ^ ReferenceError:define未定义在Object . (C:\ DB \ Repo \ TSMX \ TSMX \ TSMXTest \ app.js:1:63) )在Function.Module的Module.load(module.js:356:32)处的Module._compile(module.js:456:26)处的Object.Module._extensions..js(module.js:474:10)处 . __(module.js:312:12)在函数.Module.runMain(module.js:497:10)的启动时(node.js:119:16)在node.js:901:3

如何使这项工作和定义“定义”?我需要AMD模块,因为我将在浏览器中加载一些代码 .

我来自C#和AS3,其中Imports / Namespaces更容易,如果这是一个业余问题,那就很抱歉 .

编辑:根据http://requirejs.org/docs/node.html#nodeModules的建议,我添加到文件的顶部:

if (typeof define !== 'function')
{
var define = require('amdefine')(module );
}

define(function (require)
{
var dep = require('dependency');

return function () { };
});

但这会被typescript放在define调用中,这使得它无用 . 然后我手动将它放在define调用之外,这导致了“无法找到模块'amdefine'”错误 .

1 回答

相关问题