2017-02-27 70 views
8

我正嘗試使用Typescript for Electron開發。在爲節點和jquery輸入摔角後,我終於得到了我的.ts文件的錯誤免費。未捕獲的ReferenceError:出口未在由Typescript生成的字段中定義

的問題是現在,當我跑我的應用程序,我得到這個錯誤:

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 
    } 
} 

回答

7

新版本的打字稿2.2.1存在問題,請嘗試使用舊版本2.1.6,這解決了您對我的完全相同的問題。

關於編譯的版本2.2.1增加了這一行Object.defineProperty(exports, "__esModule", { value: true });而舊的2.1.6沒有。

+0

這工作!對於像我這樣使用Atom和Typescript軟件包的人,通過npm(packagename @ version)下載打字稿2.1.6。然後進入軟件包的源代碼,並將node_modules中的typescript文件夾替換爲您剛下載的文件夾。 – Blargmode

+0

但是爲什麼這條線會導致錯誤的行爲? –

+0

@МалъСкрылевъ看看馬克思哈恩的答案在下面:https://stackoverflow.com/a/43702240/887930 –

0

的QuickFix

變化"target": "es6""target": "es5"在tsconfig.json。

+7

沒有工作。它仍然會生成該行。 – Blargmode

+0

它的作用是將''module「'的值改爲例如'「es5」' –

26

我在嵌入HTML黑客攻擊解決它:

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

基本上給它想要的東西,一個全球性的出口變量。

隨着我的TypeScript(2.3.2)生成的文件(es6)加載。

+2

這個答案值得更多關注!謝謝 – Kahbazi

+0

你天才:),打破我最後1周的頭來解決這個問題。 –

+0

雖然這是相當黑客,但它可能是迄今爲止我見過的最聰明的一個。我想我會在解決問題之前使用它。 –

0

我對於由Typescript編譯器生成的js文件有同樣的問題。同一行:

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

而且同樣的錯誤:

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

我在這個文件中定義遊戲類。我通過我的game.ts年底加入這個解決問題的文件:

export = Game; 

這樣,打字稿編譯代替:

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

有:

module.exports = Game; 

沒有更多在這之後,我錯誤了。

0

我有同樣的問題,我只是修改了systemjs.config。JS文件下

提到 '故宮:': '/ node_modules /' - // 它的價值只是 'node_modules /',我在開始添加 '/'

「應用程序」:「/ src目錄/應用」 - // 它的價值只是「應用」和我的應用程序文件夾的路徑是不同的,所以相應地

裝載機改變了它:「/ src目錄/ systemjs- angular-loader.js' - // 它的值只是'systemjs-angular-loader.js',並且由於它的位置在我的項目中不同,因此將它指向正確的路徑

相關問題