导出未定义

时间:2017-07-08 00:55:45

标签: javascript visual-studio typescript

我收到此错误:

  

未捕获的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

我创建了2个打字稿文件:test1test2

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

1 个答案:

答案 0 :(得分:0)

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

这是错误背后的实际原因。 Web浏览器默认不支持CommonJS。 require(...)也会出现同样的问题。您需要使用RequireJSamd等模块加载器,或者您可以使用webpackbrowserify这样的打包工具。 Webpack易于配置和多样化的包装工具,已经获得了很多人气。

请参阅SO回答