Visual Studio 2015 Update 2中的TypeScript模块 - '要求'未定义

时间:2016-05-02 15:02:24

标签: javascript typescript visual-studio-2015

在Visual Studio 2015 Enterprise(已安装Update 2)中,我已从模板创建了一个新的TypeScript-Project TypeScriptHTMLApp1(使用默认项目设置)。之后,我创建了新的TypeScript文件log.ts,并将示例代码从https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#11.3复制到新创建的文件中。

// -------- log.ts --------  
export function message(s: string) {  
    console.log(s);  
}

接下来,我将以下代码行复制到app.ts文件的开头。

// -------- app.ts --------  
import { message } from "./log";    
message("hello");

class Greeter {
    element: HTMLElement;

当我尝试在Internet Explorer中运行此项目时(从Microsoft Visual Studio IDE内部),我收到以下错误消息:

Unhandled exception at line2, column 1 in http://localhost:20728/app.js
0x800a1391 - JavaScript runtime error: 'require' is undefined

1 个答案:

答案 0 :(得分:1)

您需要添加requirejs或将您的脚本与webpack捆绑在一起。 TypeScript提供模块语法并编译为require调用,但不提供运行时模块 loader 。您必须在页面中包含该脚本才能使脚本生效。

在浏览器中,确保提供--module flag并指定您正在使用的模块类型。对于您通过webpack运行的代码,es6通常为amd;对于使用requirejs的旧代码,umd / import {foo} from './bar'; 通常为{。}。

如果你看看TS编译器的输出,你会看到

define(["require", "exports"], function (require, exports) {
    "use strict";
});

变为

define

但请注意"require"以及模块"exports"grep -Hc "pattern" $(find D:/temp -type f -name "file.txt")

如果您在节点环境中运行,则nodejs运行时为commonjs module加载提供必要的功能。