2017-02-27 9 views
8

電子開発用のTypescriptを使い始めようとしています。ノードとjqueryの入力を得た後、最終的に私の.tsファイルにエラーが発生しました。未知のReferenceError:Typescriptによって生成されたフィールドにエクスポートが定義されていません

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

これらはindex.jsの最初の2行です:

"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

typescript 2.2.1の新しいバージョンに問題があります。以前のバージョン2.1.6を使用してみてください。これは、私と同じ問題を解決しました。

バージョン2.2.1のコンパイル時にこの行が追加されます。Object.defineProperty(exports, "__esModule", { value: true });古い2.1.6ではありません。

+0

これはうまくいきました!私のようなAtomとTypescriptパッケージを使っている人にとっては、 npm(packagename @ version)経由でtypescript 2.1.6をダウンロードしてください。次に、パッケージのソースに移動し、node_modulesのtypescriptフォルダをダウンロードしたものに置き換えます。 – Blargmode

+0

しかし、なぜこの行が誤った動作につながるのでしょうか? –

+0

@МалъСкрылевъMarkus Hahnの答えを下に見てください:https://stackoverflow.com/a/43702240/887930 –

0

クイックフィックス

あなたtsconfig.jsonで"target": "es5"に変更"target": "es6"

+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

下に述べたようにファイル 'NPM:': '/ node_modules /' - // その値は、単に 'node_modules /' だったと私は初め

に '/' を追加しました「アプリ」:「/ SRC /アプリ」 - // その値は単に「アプリ」だったと私のアプリのフォルダパスが異なっていたとして、それに応じ

ローダーそれを変更されます。「/ SRC/systemjs- angle-loader.js ' - // その値はちょうど 'systemjs-angular-loader.js'であり、私のプロジェクトでその場所が違って正しいパスを指していたので

関連する問題