Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获引用错误:在Typescript生成的字段中未定义导出_Javascript_Typescript - Fatal编程技术网

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

Javascript 未捕获引用错误:在Typescript生成的字段中未定义导出,javascript,typescript,Javascript,Typescript,我正在尝试开始电子开发的Typescript。在努力为node和jquery键入内容之后,我终于使.ts文件没有错误 现在的问题是,当我运行我的应用程序时,会出现以下错误: index.js:2 Uncaught ReferenceError: exports is not defined 以下是index.js中的前两行: "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 我不知道那句话

我正在尝试开始电子开发的Typescript。在努力为node和jquery键入内容之后,我终于使.ts文件没有错误

现在的问题是,当我运行我的应用程序时,会出现以下错误:

index.js:2 Uncaught ReferenceError: exports is not defined
以下是index.js中的前两行:

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
我不知道那句话有什么用。Typescript在编译时添加了它。如果我删除我的应用程序,它可以正常工作

我如何消除这个错误

哦,这是我的配置,如果相关的话

{
    "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
    }
}
快速修复
将tsconfig.json中的
“target”:“es6”
更改为
“target”:“es5”

typescript 2.2.1的新版本存在问题,请尝试使用旧版本2.1.6,它解决了与我完全相同的问题


关于编译的版本2.2.1添加了这一行
Object.defineProperty(导出,“\uu esModule”,{value:true})而旧版本的2.1.6没有。

我通过嵌入HTML中的一个技巧解决了这个问题:

<script> var exports = {}; </script>
<script src="index.js"></script>
var exports={};
基本上是给它想要的,一个全局变量


随着TypeScript(2.3.2)生成的文件(es6)的加载,我的TypeScript编译器生成的js文件也出现了同样的问题。同一行:

Object.defineProperty(exports, "__esModule", { value: true });
同样的错误:

game.js:2 Uncaught ReferenceError: exports is not defined
我在这个文件中定义了一个游戏类。我通过在game.ts文件末尾添加以下内容解决了此问题:

export = Game;
这样,Typescript编译器被替换为:

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


在此之后,我再也没有错误了。

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

'npm:':'/node\u modules/'-->它的值只是'node\u modules/',我在开头添加了'/'

'app':'/src/app'-->其值仅为'app',由于我的app文件夹路径不同,因此相应地对其进行了更改


loader:'/src/systemjs angular loader.js'-//它的值只是“systemjs angular loader.js”,由于它在我的项目中的位置不同,所以将它指向了正确的路径

我也面临同样的问题,尝试使用不同版本的typescript进行更改,但没有成功


最后我得到了它-有一个
“类型”:“module”
,当我移除它时-它工作了

我用以下方法修复了我的:

tsconfig.json

{
“编译器选项”:{
“目标”:“ESNext”,
“模块”:“CommonJS”,
“lib”:[
“DOM”,
“ES5”
],
“esModuleInterop”:true
}
}
添加esModuleInterop


从package.json中删除“type”:“module”

将您的tsconfig.json
module
更改为
es2015
,并将
模块解决方案
更改为
节点

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


导出。当我们(使用babel或TypeScript)时,
模块
要求('lib')

解决方案

tsconfig.json

"module": "ESNext",

"target": "ESNext",
index.html

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


这很有效!对于像我这样使用Atom和Typescript包的人;通过npm下载typescript 2.1.6(packagename@version). 然后进入程序包的源代码,将node_模块中的typescript文件夹替换为您刚刚下载的文件夹。但为什么这一行会导致错误行为?@МаъСаъъъ看一下下面Markus Hahn的答案:我在typescript 2.9.2中遇到了这个问题。现在不是已经解决了吗?我在TypeScript 3.4.5中遇到了这个问题。修复程序是否仍要降级到版本2.1.6?如果您将
“module”
的值更改为例如
“es5”
请尝试此解决方案,我需要删除:F&^%$\g lengend!这是唯一一个解决GIthub问题的解决方案。如此简明扼要。史诗。
<script type="module" src="script.js"></script>