我已经将大型JS项目转换为使用PhantomJs的打字稿(作为I C#程序员)。 问题是解释器(phantomjs)在执行此js文件时失败。
D:\My\phantomjs-1.9.7-windows\phantomjs.exe --load-images=false --ssl-protocol=any --web-security=no --cookies-file=cookies C:\Users\alex\Projects\robot\bo.js
TypeError: 'undefined' is not an object (evaluating 'b.prototype')
代码是:
var __extends = this.__extends || function (d, b) {
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]
function __() { this.constructor = d; }
__.prototype = b.prototype; // <<< here
d.prototype = new __();
};
因此。我认为这个问题与继承有一定关系。 有没有人遇到过这个问题?任何帮助表示赞赏。感谢。
答案 0 :(得分:12)
此错误的最常见原因是您以错误的顺序加载文件...例如......
档案A
class ExampleClass {
someMethod() {
alert('Hello World');
}
}
档案B
class ExampleSubClass extends ExampleClass {
}
如果您要在File B
之前加载File A
,则会收到您所描述的确切错误。 (这包括忘记在File A
之后加载File A
或加载File B
。
修复
如果要将所有文件合并到一个文件中(并且您可能正在使用_references.ts
文件),请确保引用的顺序正确。
/// <reference path="file-a.ts" />
/// <reference path="file-b.ts" />
如果您使用的是脚本标记,则类似的修复(确保您使用.js
扩展并检查加载顺序)...
<script src="file-a.js"></script>
<script src="file-b.js"></script>