2016-07-19 5 views
0

から作成されたパスでのjsファイルを必要とするとき、私はクライアント側のアプリをbrowesify使用しています。私は私のindex.jsファイルのほかに座っファイルmaps.jsdirections.jsを持っている、と私index.jsの内側に、私は私が「必要」必要があるファイルの名前を返す関数getPageName()を持っています。私がしようとするとBrowserify:不明なエラー文字列の連結

var pageName = getPageName(); 
var page; 
if (pageName === 'maps') { 
    page = require('./maps'); 
} else if (pageName === 'directions') { 
    page = require('./directions'); 
} 

それは正常に動作します。私が代わりに

var pageName = getPageName(); 
var page = require('./' + pageName); 

、私のコードを最小限にするために、次のトリックを使用しようとすると、しかし、私はChromeのコンソールログにエラー Uncaught Error: Cannot find module './maps'を取得します。私は文字列の連結を使用するとき、なぜ私はパスを明示的にパスを使用して動作しませんか?

答えて

1

Browserifyと同様のタイプライブラリの制限です。 require()ライブラリーを行うために文字列としてjsのコードを調べ、コードが実行される前に、ファイルパスを決定しなければなりません。つまり、ファイルパスを静的に取得する必要があります。

https://github.com/substack/node-browserify/issues/377

Browserifyのみを分析することができ、静的に必要です。それは の範囲に含まれていません。動的処理のためにブラウジングする必要があります

+0

これを明確にしていただきありがとうございます。 – codneto