未定义define,amd-loader vs CommonJs

时间:2015-09-04 18:56:04

标签: node.js typescript protractor visual-studio-2015 node-modules

我正在研究this answer

的第一部分

当我将main.ts编译为js

require("amd-loader");
import someModule = require('../mymodule')
var someClass  = new someModule.MyNamespace.MyClass();

它变成了:

define(["require", "exports", '../mymodule'], function (require, exports, someModule) {
    require("amd-loader");
    var someClass = new someModule.MyNamespace.MyClass();
});

然后它给了我define is not defined错误

当我如下修改它时,错误就会消失。

require("amd-loader");
define(["require", "exports", '../mymodule'], function (require, exports, someModule) {
    var someClass = new someModule.MyNamespace.MyClass();
});

然后我得到Cannot read property 'MyClass' of undefined错误

如何解决这些错误并使其按照Q&A中提到的那样正常工作?

我的环境是Visual Studio 2015,我使用AMD选项作为模块系统编译(显然我尝试了每个选项)。我正在进行角度量角器e2e测试

1 个答案:

答案 0 :(得分:1)

正如this answer的basarat所说,在这种情况下应该使用CommonJS。

在Visual Studio 2015版本14.0.23.107.0中,似乎TypeScript模块系统选项不起作用,并且它始终与任何选定的任何一个编译

enter image description here

因此可以选择this post CommonJS。

瞧它用CommonJS编译并按预期工作