2017-07-08 73 views
0

我得到这个错误:出口没有定义

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个打字稿文件:test1test2

这是测试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

+0

谁曾试图关闭这一问题,下投我,因为目前还不清楚。我试图从'../ path''使用'import {class1,class2,...}导入一系列类。我收到上面发布的错误。我做了一些研究并找到了一些答案。但我不知道这些解决方案是否适用于Visual Studio。如果你不明白我的问题,为什么不解释为什么你觉得困难而不想解决问题呢? – Richard77

+0

你可以发布你的代码吗? – GregHNZ

+0

请参阅编辑。 – Richard77

回答

0

既然你已经澄清了问题发生在浏览器中,很容易修复。 由于您的解决方案中没有创建tsconfig.json文件,因此您的项目将使用VS中的默认配置进行编译。即它将使用CommonJS作为目标模块。有关tsconfig.json的更多信息,可以阅读here

这是错误背后的真正原因。 Web浏览器默认不支持CommonJS。 require(...)也会发生同样的问题。您需要使用模块装载机,例如RequireJSamd,或者您可以使用包装工具,如webpackbrowserify,这可以为您做到这一点。 Webpack很容易配置和多样化的包装工具,已经获得了很多人气。

SO答案