我收到此错误:
未捕获的ReferenceError:
exports
未定义
好像已经多次询问和回答了这个问题。这是question被问到的一个例子。
我遇到的唯一问题是,我无法找到人们在答案中提及的 tsconfig.ts 文件。 VS解决方案中没有这样的文件。
我使用的是Visual Studio 2017企业版。
我在名为CommonTypes.ts
的文件中定义了所有常见类型class ddlData {
ctrId: string;
id: string;
}
interface ISelectedIdsObj {
facilityId: number;
AllCk: boolean;
AllSelected: boolean;
Ids: number[];
totalItems: number;
}
//More classes and intefaces here...
export { ddlData, ISelectedIdsObj, IPaginationData, IHeaderColumn, ISelectedListItem }
这就是我所说的
/// <reference path="../typings/jquery/jquery.d.ts" />
//import { ddlData, ISelectedIdsObj, IPaginationData, IHeaderColumn, ISelectedListItem } from '../Commons/CommonTypes'
我得到Uncaught ReferenceError: exports is not defined at line 3
。
我创建了2个打字稿文件:test1
和test2
。
这是test2:
export const x = 1;
这是test1:
/// <reference path="../typings/jquery/jquery.d.ts" />
import { x } from './Test2'
$(function () {
alert(x);
});
我仍然遇到同样的错误:Uncaught ReferenceError: exports is not defined at Test1.js:3
答案 0 :(得分:0)
由于您已澄清问题在浏览器中发生,因此很容易修复。
由于您尚未在解决方案中创建tsconfig.json
文件,因此您的项目将使用VS中的默认配置进行编译。即它将CommonJS
用作目标模块。有关tsconfig.json
的更多信息,请参阅here。
这是错误背后的实际原因。 Web浏览器默认不支持CommonJS。 require(...)
也会出现同样的问题。您需要使用RequireJS
或amd
等模块加载器,或者您可以使用webpack或browserify这样的打包工具。 Webpack
易于配置和多样化的包装工具,已经获得了很多人气。
请参阅SO回答