2017-01-21 8 views
1
main.js 
level.js 
num3.js 
num4.js 

main.jsを変数を渡すbrowserify二つの別々の束は、第二のファイルから

require('./level'); 
console.log(num3); 

level.js以下のように見えるが

var num3 = require('./num3'); 
var num4 = require('./num4'); 

以下

バンドルファイル

browserify --require ./level.js:level.js > bundle-level.js 
browserify --exclude level.js main.js > bundle-main.js 

のように見えます私はnum3を得ることができません//Uncaught ReferenceError: num3 is not defined必要な変数./num3num4var num3 = require('./num3');をグローバル変数window.num3 = require('./num3');に変更すると値を取得できます。

変数num3とnum4を通過させる適切な方法はありますか?

+0

は、 '「(何を必要としている./レベル2 '); '? 'level2'はあなたのファイルシステムスニペットのファイルに対応していないようです。あなたは 'require( './ level');'? – cartant

+0

'num'ファイルがどのディレクトリにあるのかは疑問から分かりません。そして、' level'によって 'num3'と' num4'を 'main'に渡す必要がありますか?残念ながら、明らかではありません。 – cartant

+0

@cartant。はい、それらは同じフォルダにあります。はい、私はnum3とnum4をレベルを介してメインに渡したいと思います – olo

答えて

1

まず、main.jsrequireの問題があると思います。

main.jsた場合は、このrequireがあります

require('./level'); 

Browserifyがメインバンドルでlevel.jsを含むことになります。

browserify --require ./level.js:level.js > bundle-level.js 

モジュールのために使われている名前です。理由は、このコマンドで:を次の名前があることです。そして、このコマンドで:requireは間-バンドルrequireで実行時に解決されるため、

browserify --exclude level.js main.js > bundle-main.js 

あなたは、それがrequire('level.js')を見たとき、それが何をバンドルしないことをBrowserifyを語っています。

(通常のJavaScriptファイルは、あまりにも、.jsをオフのままその場合、と)あなたがrequireに非相対名を使用する必要があります。

browserify --require ./level.js:level > bundle-level.js 
browserify --exclude level main.js > bundle-main.js 

を次にmain.jsrequireは次のようになります。

const level = require('level'); 

あなたはnum3num4をエクスポートする場合は、あなたがこのようなlevel.jsで行うことができます。

exports.num3 = require('./num3'); 
exports.num4 = require('./num4'); 

そしてmain.jsにあなたがして持っているでしょう:

const level = require('level'); 
console.log(level.num3); 
console.log(level.num4); 

をあなたは(Browserifyがエミュレート)ノードのモジュール解決メカニズムに興味があるなら、それはhereを説明しています。 --require--exclude Browserifyオプションは、基本的にそのメカニズムを無効にし、実行時にバンドル間で解決するようにBrowserifyに指示します。

したい場合にも、あなたは束の間に-ing requireのための複数のモジュールを指定することができます。

browserify \ 
    --require ./num3.js:num3 \ 
    --require ./num4.js:num4 \ 
    --require ./level.js:level > bundle-level.js 
browserify \ 
    --exclude num3 \ 
    --exclude num4 \ 
    --exclude level main.js > bundle-main.js 

そしてmain.js中を:

const level = require('level'); 
const num3 = require('num3'); 
const num4 = require('num4'); 
+0

多くのおかげで@カルタント – olo