[英]Uncaught ReferenceError: exports is not defined in filed generated by Typescript
我正在嘗試開始使用 Typescript 進行電子開發。 在為 node 和 jquery 打字苦苦掙扎之后,我終於擺脫了我的 .ts 文件錯誤。
現在的問題是,當我運行我的應用程序時,出現此錯誤:
index.js:2 Uncaught ReferenceError: exports is not defined
這些是 index.js 中的前兩行:
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
我不知道那條線可以。 打字稿在編譯時添加了它。 如果我刪除它,我的應用程序運行良好。
我如何擺脫這個錯誤?
哦,這是我的 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
}
}
我通過嵌入 HTML 中的 hack 解決了它:
<script> var exports = {}; </script>
<script src="index.js"></script>
基本上給它想要的東西,一個全局導出變量。
這樣我的 TypeScript (2.3.2) 生成的文件 (es6) 就會加載。
我也面臨同樣的問題,並嘗試使用不同版本的打字稿,但沒有奏效。
終於我明白了 - 有一個"type": "module"
,當我刪除它時 - 它起作用了
新版本的 typescript 2.2.1 存在問題,請嘗試使用舊版本 2.1.6,它解決了您為我遇到的完全相同的問題。
2.2.1 版編譯添加了這一行Object.defineProperty(exports, "__esModule", { value: true });
而較舊的 2.1.6 則沒有。
我已經用以下方法修復了我的:
tsconfig.json
{
"compilerOptions": {
"target": "ESNext",
"module": "CommonJS",
"lib": [
"DOM",
"ES5"
],
"esModuleInterop": true
}
}
添加 esModuleInterop
從 package.json 中刪除 "type": "module"
我對 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 });
和:
module.exports = Game;
在這之后,我再也沒有錯誤了。
您tsconfig.json更改module
到es2015
和moduleResolution
到node
。
{
"compilerOptions": {
"target": "es5",
"module": "es2015",
"moduleResolution": "node"
}
}
exports.__esModule
和require('lib')
是我們從 ES 模塊轉換為 commonjs (使用 babel 或使用 TypeScript)時發生的情況。
我遇到了同樣的問題,我只是修改了systemjs.config.js文件,如下所述
'npm:': '/node_modules/' -- //它的值只是 'node_modules/' 我在開頭加了 '/'
'app': '/src/app' -- //它的值只是 'app' 並且因為我的應用程序文件夾路徑不同所以相應地改變它
loader: '/src/systemjs-angular-loader.js' -- //它的值只是 'systemjs-angular-loader.js' 並且因為它在我的項目中的位置不同所以指向正確的路徑
解決方案
配置文件
"module": "ESNext",
"target": "ESNext",
索引.html
<script type="module" src="script.js"></script>
將"target": "es6"
更改為"target": "es5"
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.