出口没有定义
问题描述:
我得到这个错误:出口没有定义
Uncaught ReferenceError:
exports
is not defined
好像这个问题已经被问和回答了好几次。这是被问到的这个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
。
EDIT 2
我创建2个打字稿文件:test1
和test2
。
这是测试2:
export const x = 1;
,这是测试1:
/// <reference path="../typings/jquery/jquery.d.ts" />
import { x } from './Test2'
$(function() {
alert(x);
});
我仍然得到同样的错误:Uncaught ReferenceError: exports is not defined at Test1.js:3
答
既然你已经澄清了问题发生在浏览器中,很容易修复。 由于您的解决方案中没有创建tsconfig.json
文件,因此您的项目将使用VS中的默认配置进行编译。即它将使用CommonJS
作为目标模块。有关tsconfig.json
的更多信息,可以阅读here。
这是错误背后的真正原因。 Web浏览器默认不支持CommonJS。 require(...)
也会发生同样的问题。您需要使用模块装载机,例如RequireJS
或amd
,或者您可以使用包装工具,如webpack或browserify,这可以为您做到这一点。 Webpack
很容易配置和多样化的包装工具,已经获得了很多人气。
见SO答案
谁曾试图关闭这一问题,下投我,因为目前还不清楚。我试图从'../ path''使用'import {class1,class2,...}导入一系列类。我收到上面发布的错误。我做了一些研究并找到了一些答案。但我不知道这些解决方案是否适用于Visual Studio。如果你不明白我的问题,为什么不解释为什么你觉得困难而不想解决问题呢? – Richard77
你可以发布你的代码吗? – GregHNZ
请参阅编辑。 – Richard77