2016-05-26 6 views
0

私は自己発火機能を定義しました。JS + Browserify:Browserifyビルド後に機能がアクセス/定義されない

'use strict' 

var test = (function(){ 
    console.log('This should log to console immediately.') 
    function testMe() { 
     console.log('Test successful!') 
    } 
    return { 
     testMe: testMe 
    } 
})() 

ブラウザがスクリプトを読み込むと、関数が起動し、出力がコンソールに記録されます。同様に、test.testMe()は、コソールへのログになります。

しかし、NPMモジュールの数を含めたいと思います。これを行うために、私はBrowserifyを使用しています。

問題は、Browserifyの組み込みコードが同じように機能しないことです。外側のファンクションはすぐに起動しますが、内側のファンクションにはtest.testMe()でアクセスすることはできません。私の代わりにエラーが表示されます。

index.html:32 Uncaught ReferenceError: test is not defined

なぜ?以前のように機能を利用できるようにするにはどうすればよいですか?なぜコードはBrowserifyを通過した後に異なった振る舞いをしますか?

(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ 
// main.js 
var test = (function(){ 
    console.log('This should log to console immediately.') 
    function testMe() { 
     console.log('Test successful!') 
    } 
    return { 
     testMe: testMe 
    } 
})() 

},{}]},{},[1]); 

答えて

0

理由:

参考のため、ここではbrowserifiedコードですか?

あなたはbrowserifiedコードで見ることができるように、あなたのコードはtestローカルその関数に宣言されていることを意味機能、内側になりました。グローバルではないため、コンソールでアクセスすることはできません。

以前のように機能を使用できるようにするにはどうすればよいですか?

explicitly create a global variableまたはエクスポートするオブジェクトはconfigure browserify to expose that exportです。

Browserifyを実行した後、コードの動作が異なるのはなぜですか?

ブラウザのコードは、あなたのコードと異なるです。また、最初の段落を参照してください。

関連する問題