2016-07-23 4 views
0

fs.readFileSyncなどのように、fsなどのモジュールを使用するモジュールを使用するnodeモジュールがあります。レベル0のルートモジュールを持つパッケージ依存関係の第2レベルまたは第3レベルにあるため、これらの依存関係を手動で削除できません。ノード `fs.readFileSync`をブラウズしてChrome/Safari/IEで動作させるにはどうすればいいですか?

私はブラウザでこれらのモジュールを実行する必要があるので、私はbrowserifywebpackの両方を試しました。 私webpack構成は以下の

var path = require('path'); 
var webpack = require("webpack"); 

module.exports = { 
    entry: './pgapi', 
    output: { 
    path: path.join(__dirname, 'dist'), 
    filename: 'bundle.js' 
    }, 
    module: { 
    noParse: /node_modules\/json-schema\/lib\/validate\.js/, 
    loaders: [ 
     { test: /\.json$/, loader: 'json-loader' } 
     , { 
      test: /\.js$/, 
      loader: "transform?brfs" 
     } 
    ] 
    }, 
    resolve: { 
    extensions: ['', '.webpack.js', '.web.js', '.js'] 
    }, 
    node: { 
    console: true, 
    fs: 'empty', 
    net: 'empty', 
    tls: 'empty' 
    }, 
    plugins: [ 
     //new webpack.optimize.UglifyJsPlugin(), 
     //new webpack.optimize.DedupePlugin(), 
     new webpack.DefinePlugin({ 
      __DEV__: true 
     }) 
    ] 
}; 

であると私はbundle.jsは私がするときであるためbabelを実行して作成した後fs.readFileSyncなど

の世話をしようとする変換brfsとの代替としてbrowserifyを使用していますSafari ES5 strict modeへの完全な準拠はなく、arrow operatorおよびletおよびconstもこのスクリプトを使用してサポートされていません。

var fs = require('fs') 
var args = process.argv.slice(2); 
var code=fs.readFileSync(args[0]) 
var res=require("babel-core").transform(code, { 
    plugins: [ 
    "transform-es2015-arrow-functions", 
    "transform-es2015-constants", 
    "transform-es2015-block-scoping"] 
}); 
console.log(res.code) 

だから私はdist/bundle.js

$ node babelify.js dist/bundle.js > out.jsに続い $ webpackまたは$ browserify mymodule.js -o dist/bundle.js -t brfs

と好きです。それはfs.readFileSync(varname)内の変数を理解していないようにbrsf変換という事実によるものであるように思わReferenceError: Can't find variable: fsで、その後どうなり

hereを参照) は、静的な表現のevalの作品を行います。 XcodeでMacGapを使用しています。WebViewクライアントコードをEl Capitanにテストしています。

ビルド時にこれを取り除く方法を教えてください。

+2

とにかくファイルシステムにアクセスできないブラウザでは、どのようにファイルを取得できますか? – adeneo

+0

私はそれを必要としません。依存関係によって必要とされますが、そのうちのいくつかは私がまったく使用していないものですが、削除できません。それ以外の場合は、ビルド時に 'brsf'変換がロードされるローカルの' json'ファイルのようなものです - そのリンクを参照してください。問題は、 'brfs'の静的な評価では、' fs.readFileSync(fileName) 'などを呼び出すときに変数を使用するほとんどのモジュールのすべてのケースを考慮していないことにあります。 – loretoparisi

+0

http://stackoverflow.com/question/16640177/browserify-with-requirefs – adeneo

答えて

1

私も同様の問題がありました。

mimeと呼んでいるモジュールを特定し、代替モジュールを見つける。私の場合、これはurl-loaderで、これはmimeに依存しています。

file-loaderに置き換えられました。これはmimeに依存しないため、fsには依存しません。 url-loaderをアンインストールしても、エラーが発生する可能性があります。

関連する問題