首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Typescript ReferenceError:未定义导出

Typescript ReferenceError:未定义导出
EN

Stack Overflow用户
提问于 2017-03-27 17:39:13
回答 24查看 294.2K关注 0票数 158

尝试实现遵循official handbook的模块时,我收到以下错误消息:

未捕获ReferenceError:未定义导出

在app.js:2

但是在我的代码中,我从来没有使用过exports这个名字。

我该如何解决这个问题呢?

文件

app.ts

代码语言:javascript
复制
let a = 2;
let b:number = 3;

import Person = require ('./mods/module-1');

module-1.t

代码语言:javascript
复制
 export class Person {
  constructor(){
    console.log('Person Class');
  }
}
export default Person;

tsconfig.json

代码语言:javascript
复制
{
   "compilerOptions": {
        "module": "commonjs",
        "target": "es5",
        "noImplicitAny": false,
        "sourceMap": true,
        "outDir": "scripts/"
    },
    "exclude": [
        "node_modules"
    ]
}
EN

回答 24

Stack Overflow用户

回答已采纳

发布于 2017-05-16 18:34:18

编辑:

如果你不再以es5为目标,这个答案可能不起作用,我会试着让答案更完整。

原始答案

如果未安装CommonJS (which defines exports),则必须从tsconfig.json中删除此行

代码语言:javascript
复制
 "module": "commonjs",

根据评论,这可能不适用于更高版本的tsc。如果是这种情况,您可以安装一个模块加载器,如CommonJS、SystemJS或RequireJS,然后指定它。

备注:

看看tsc生成的main.js文件。你会在最上面找到这个:

代码语言:javascript
复制
Object.defineProperty(exports, "__esModule", { value: true });

它是错误消息的根源,在删除"module": "commonjs",之后,它将消失。

票数 72
EN

Stack Overflow用户

发布于 2017-10-23 18:47:28

这个问题的其他解决方案很少

  • 在对Javascript的其他引用之前添加以下行。这是一个不错的小技巧。

代码语言:javascript
复制
   <script>var exports = {};</script>
票数 82
EN

Stack Overflow用户

发布于 2020-04-03 02:33:08

一种解决方案:

package.json中删除"type": "module"

票数 46
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43042889

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档