在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
答案 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加载提供必要的功能。