未捕获引用错误:未在Typescript生成的字段中定义导出

xpcnnkqh  于 2022-12-24  发布在  TypeScript
关注(0)|答案(9)|浏览(238)

我正在尝试开始使用Typescript进行电子开发,在努力为节点和jquery输入数据之后,我终于得到了没有错误的.ts文件。
现在的问题是,当我运行我的应用程序,我得到这个错误:

index.js:2 Uncaught ReferenceError: exports is not defined

下面是index.js中的前两行:

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });

我不知道这行行是否有。Typescript在编译时添加了它。如果我删除它,我的应用程序可以正常工作。
我如何摆脱这个错误?
哦,这是我的tsconfig,如果这是相关的。

{
    "compilerOptions": {
        "target": "es6",
        "module": "commonjs",
        "moduleResolution": "node",
        "isolatedModules": false,
        "jsx": "react",
        "experimentalDecorators": true,
        "emitDecoratorMetadata": true,
        "declaration": false,
        "noImplicitAny": false,
        "noImplicitUseStrict": false,
        "removeComments": true,
        "noLib": false,
        "preserveConstEnums": true,
        "suppressImplicitAnyIndexErrors": true
    },
    "exclude": [
        "node_modules",
        "typings/browser",
        "typings/browser.d.ts"
    ],
    "compileOnSave": true,
    "buildOnSave": false,
    "atom": {
        "rewriteTsconfig": false
    }
}
s4n0splo

s4n0splo1#

我用嵌入HTML的方法解决了这个问题:

<script> var exports = {}; </script>
<script src="index.js"></script>

基本上给了它想要的,一个全局 exports 变量。
然后我的TypeScript(2.3.2)生成的文件(es6)加载。

aoyhnmkz

aoyhnmkz2#

我也面临着同样的问题,并尝试chagning与不同版本的 typescript ,但没有工作。
最后我得到了它-有一个"type": "module"在packageiderjson和当我删除它-它的工作

ruoxqz4g

ruoxqz4g3#

有一个问题与新版本的typescript 2.2.1,尝试使用旧版本2.1.6,这解决了完全相同的问题,你有我.
版本2.2.1在编译时添加了这一行Object.defineProperty(exports, "__esModule", { value: true });,而旧版本2.1.6没有。

v6ylcynt

v6ylcynt4#

我已经修复了我的如下:
第一个月

{
    "compilerOptions": {
        "target": "ESNext",
        "module": "CommonJS",
        "lib": [
            "DOM",
            "ES5"
        ],
        "esModuleInterop": true
    }
}

正在添加esModuleInterop
删除“类型”:来自包.json的“模块”

flmtquvp

flmtquvp5#

我在使用Typescript编译器生成的js文件时遇到了同样的问题。

Object.defineProperty(exports, "__esModule", { value: true });

同样的错误:

game.js:2 Uncaught ReferenceError: exports is not defined

我在这个文件中定义了一个Game类。我通过在我的game.ts文件末尾添加以下内容来解决这个问题:

export = Game;

用它,Typescript编译器替换了:

Object.defineProperty(exports, "__esModule", { value: true });

与:

module.exports = Game;

在这之后我再也不会出错了。

omqzjyyz

omqzjyyz6#

将您的tsconfig.jsonmodule更改为es2015,将moduleResolution更改为node

{
  "compilerOptions": {
    "target": "es5",
    "module": "es2015",
    "moduleResolution": "node"
  }
}

Taken from this answer
exports.__esModulerequire('lib')是当我们transpile from an ES module to commonjs(使用babel或TypeScript)时发生的情况。

fxnxkyjh

fxnxkyjh7#

解决方案

tsconfig.json

"module": "ESNext",

"target": "ESNext",

index.html

<script type="module" src="script.js"></script>
8iwquhpp

8iwquhpp8#

我遇到了同样的问题,我只是修改了systemjs.config.js文件,如下所述

  • “npm:':'/node_modules/'**-- // * 它的值只是”node_modules/“,我在开头添加了”/“
  • *“app”:“/src/app '**-- // * 它的值只是”app“,由于我的应用程序文件夹路径不同,因此会相应地更改它 *
    loader:'/src/systemjs-angular-loader.js'-- // * 它的值只是'systemjs-angular-loader.js',由于它在我的项目中的位置不同,所以将它指向正确的路径 *
14ifxucb

14ifxucb9#

快速修复

在tsconfig.json中将"target": "es6"更改为"target": "es5"

相关问题