web-dev-qa-db-ja.com

Babelでes6クラスをエクスポート-モジュールが見つかりません

私はSOでこれらの2つの答えを見ました:

ES6(Babel)でクラスをエクスポートする

クラスをモジュールES6 babelとしてエクスポートしようとしています

私はBrowserifyを使用しておらず、GulpとNodeだけを使用しており、まえがきをしたかっただけです。


ファイル/フォルダー構造:

./

./gulpfile.js

./_GULP

./_GULP/main_config.es6

./_GULP/_classes/Gcfg.es6


質問の設定

次のように、クラス_Gcfg.es6_ファイルをエクスポートしています。

_export default class Gcfg {
   constructor() {
        this.rootDir = './';
        this.latestDir = './_LATEST/';
        this.srcFolder = './_SRC/';
        ...
   }

    getSrcDir(dir="") {
        return this.srcFolder + dir;
    }
    ...
}
_

_main_config.es6_でインポートしようとしています:

_import Gcfg from '_classes/Gcfg';
_

このGitHubの投稿をフォローする:

https://github.com/babel/babel/issues/849

私はそれをすべて正しくやっていると思いました。私はWebStormを使用しており、.es6ファイルの保存時にBabelを実行するための「ファイルウォッチャー」セットアップを持っています。私はそこで特別なことは何もしていません。私が使用しているオプションのフラグは次のとおりです。

_--source-maps_および_--out-file $FileNameWithoutExtension$.js $FilePath$_

$ FileNameWithoutExtension $ .jsはWebStormアプリケーション変数であり、ウォッチャーによってロードされるファイルであり、$ FilePath $はファイルへの絶対パスです。

したがって、コマンドは次のようになります(実際には実行されていないようです)。

他のファイルの場合は_babel --source-maps --out-file main_config.js ./_GULP/_など。

すべてのファイルは、私が信じているbabelによって正常に処理されます。生成されたJSにエクスポートと要件が表示されます。

tl; dr

_gulpfile.js_で私はやっています:

gCfg = require('./_GULP/main_config'); <-これには作業が必要です!

ただし、GULPを実行しようとするとすぐに失敗し、コンソールに次のように表示されます。

_Error: Cannot find module '_classes/Gcfg'
at Function.Module._resolveFilename (module.js:336:15)
at Function.Module._load (module.js:286:25)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/Users/xxx/xxx/xxx/xxx/xxx/_GULP/main_config.js:9:20)
at Module._compile (module.js:434:26)
at Object.Module._extensions..js (module.js:452:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
_

質問

_Gcfg.es6_のクラスをエクスポートして、es6 import/exportを使用して_main.es6_にインポートできないのはなぜですか?ポリフィルが必要ですか(バイブル/ポリフィルをロードしています)?パスに___があるということですか?私はこれをあまりにも長い間スラッシングしてきました。

ありがとう!

10
Red2678

あなたが持っている一つのことのために:

import Gcfg from '_classes/Gcfg';

CommonJSにコンパイルしていて、特別な設定がない場合、Nodeはnode_modules/_classes/Gcfgをロードしようとします。おそらく次のようにします。

import Gcfg from './_classes/Gcfg';
32
JMM