如何解决' 0x800a1391 - JavaScript运行时错误:'要求'未定义'?

时间:2016-12-12 15:18:21

标签: typescript

我是一名C#开发人员,在尝试学习Typescript时几乎没有网络经验。我正在敲响这条错误信息。

0x800a1391 - JavaScript runtime error: 'require' is undefined

简而言之,我已经构建了一个带有Typescript代码的Html应用程序。我使用VS2015作为我的IDE。除了我项目中的app.ts和index.html,我有5个Typescript文件,其中每个文件只包含一个类(这是我的C#遗产)。

在app.ts中,我尝试在window.onload Javascript事件中实例化一个类。在window.onload正上方,我尝试导入我的一个类。

import {ClassA} from "./ClassA.ts";

window.onload = () => {

    var cls = new ClassA();
    cls.doSomething();
};

当我尝试运行此代码时,我在import语句的问题中收到错误消息。凭借对Typescript的非常基本的了解,我尝试了:

  1. 将每个类导出为其自己的模块。它没有用。
  2. 在app.ts的顶部添加以下路径。它没有用。

    ///<reference path="require.d.ts" />
    ///<reference path="jquery.d.ts" />
    ///<reference path="node.d.ts" />
    
  3. 我很确定这是一个没有使用过类型手稿经验的人的新手错误。有人知道如何解决这个问题吗?

    谢谢

1 个答案:

答案 0 :(得分:0)

如果您要构建网络,则需要使用其他工具进行模块解析(webpack,browserify等),或者不使用模块。

如果您使用编译器选项outFile"module": "none",则将得到一个文件,其中没有可以直接在浏览器中运行的模块。

tsconfig.json:

{
  "compilerOptions": {
    "target": "es5",
    "module": "none",
    "outFile": "./lib/out.js"
  }
}

ClassA.ts(不导出)

class ClassA {
    // stuff
}

app.ts(不导入)

///<reference path="./ClassA.ts" />

window.onload = () => {

    var cls = new ClassA();
}

将转换为:

var ClassA = /** @class */ (function () {
    function ClassA() {
    }
    return ClassA;
}());
///<reference path="./ClassA.ts" />
window.onload = function () {
    var cls = new ClassA();
};