【问题标题】:Typescript - Uncaught ReferenceError: exports is not defined打字稿 - 未捕获的 ReferenceError:未定义导出
【发布时间】: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 的导入不同,但我假设您在本地拥有正确的名称
  • 是的,我在本地有正确的名称。我会编辑它

标签: typescript


【解决方案1】:

当您在代码中使用export 而在tsconfig.json 中使用"module": "commonjs" 时,结果代码将采用commonjs 模块样式。

例如:

export class Foo{}

会结果是:

.
.
.
exports.Foo = Foo;

因此,当您尝试运行结果js 代码时,如果环境不支持commonjs,您将收到此错误。

例如,浏览器不支持commonjs,但nodejs 支持。 您可以使用webpackcommonjs 支持添加到浏览器,或者只需添加browserify

【讨论】:

  • 使用 npm 全局安装了 browserify,但我仍然收到错误消息!
  • “全局安装”是什么意思?您还必须在 html 中包含脚本...
  • 我的意思是,安装了browserify,尝试制作一个bundle.js,将它包含在带有脚本标签的html中,但没有。
  • 运行browserify -e app.js -o bundle.js 应该创建一个在浏览器上工作的js文件。
  • 谢谢,成功了。但是有必要使用browserify吗? typescript 本身不支持 import 语句吗?
猜你喜欢
  • 2016-12-13
  • 2016-10-23
  • 2017-10-31
  • 1970-01-01
  • 2018-02-20
  • 1970-01-01
  • 1970-01-01
  • 2015-09-18
  • 2019-02-28
相关资源
最近更新 更多