打字稿 - 未捕获的 ReferenceError:未定义导出
Posted
技术标签:
【中文标题】打字稿 - 未捕获的 ReferenceError:未定义导出【英文标题】:Typescript - Uncaught ReferenceError: exports is not defined 【发布时间】:2018-01-21 23:10:06 【问题描述】:我在尝试在主 app.ts 中导入其他 ts 文件时收到此错误消息(未捕获的 ReferenceError:未定义导出)
app.ts
import LanguagesConfigs from './LanguagesConfigs';
let languagesConfigs = new LanguagesConfigs();
LanguagesConfigs.ts
export class LanguagesConfigs
code
tsconfig.json
"compilerOptions":
"target": "es5",
"module": "commonjs",
"sourceMap": true
我在 Visual Studio 代码中编译它。它生成 .js 和 .js.map 文件
注意:我没有使用像 angular 这样的框架,只是简单的打字稿。 注2:CommonJS安装在项目中(Typescript ReferenceError: exports is not defined)
【问题讨论】:
你能提到你正在使用的打字稿版本吗?tsc -v
打字稿 2.4.2 npm 3.10.10
似乎对我有用。你能分享更多信息吗?
LanguageConfigs 文件名虽然与具有 LanguageSConfigs 的导入不同,但我假设您在本地拥有正确的名称
是的,我在本地有正确的名称。我会编辑它
【参考方案1】:
当您在代码中使用export
而在tsconfig.json
中使用"module": "commonjs"
时,结果代码将采用commonjs
模块样式。
例如:
export class Foo
会结果是:
.
.
.
exports.Foo = Foo;
因此,当您尝试运行结果js
代码时,如果环境不支持commonjs
,您将收到此错误。
例如,浏览器不支持commonjs
,但nodejs
支持。
您可以使用webpack 将commonjs
支持添加到浏览器,或者只需添加browserify
【讨论】:
使用 npm 全局安装了 browserify,但我仍然收到错误消息! “全局安装”是什么意思?您还必须在 html 中包含脚本... 我的意思是,安装了browserify,尝试制作一个bundle.js,将它包含在带有脚本标签的html中,但没有。 运行browserify -e app.js -o bundle.js
应该创建一个在浏览器上工作的js文件。
谢谢,成功了。但是有必要使用browserify吗? typescript 本身不支持 import 语句吗?以上是关于打字稿 - 未捕获的 ReferenceError:未定义导出的主要内容,如果未能解决你的问题,请参考以下文章