2016-08-17 6 views
3

私はノードを配布するために単一のファイルにnode.js expressアプリケーションをバンドルしようとしています。私はそのような目的のためにwebpackを使用しようとしています。バンドルプロセスは正常に動作しますが、バンドルからアプリケーションを実行しようとするとエラーが発生します。"express" node.jsアプリケーションをバンドルするには? (Webpackで)

Error: secure random number generation not supported by this browser use chrome, FireFox or Internet Explorer 11"

以下は私のwebpack設定です。私はここでnode bundle.js

var webpack = require('webpack'); 

module.exports = { 
    context: __dirname, 
    devtool: 'eval', 
    entry: [ 
    './index.js' 
    ], 
    output: { 
    filename: 'bundle.js', 
    publicPath: '/public' 
    }, 
    resolve: { 
    extensions: ['', '.js', '.json'], 
    }, 
    module: { 
    loaders: [ 
     { 
     test: /\.css$/, 
     loader: 'null-loader' 
     }, 
     { 
     test: /\.json$/, 
     loader: 'null-loader' 
     } 
    ] 
    }, 
    plugins: [ 
    new webpack.DefinePlugin({ 
    'process.env.NODE_ENV': JSON.stringify('production') 
    }), 
    new webpack.NoErrorsPlugin(), 
    new webpack.optimize.DedupePlugin(), 
    new webpack.optimize.UglifyJsPlugin({ 
     compress: { warnings: false } 
    }), 
    new webpack.optimize.AggressiveMergingPlugin(), 
    new webpack.optimize.OccurenceOrderPlugin(true) 
    ] 
} 

でコードを実行している完全なエラー・スタックです:

Error: secure random number generation not supported by this browser 
use chrome, FireFox or Internet Explorer 11 
    at module.exports (webpack:///./~/crypto-browserify/rng.js?:21:13) 
    at exports.randomBytes (webpack:///./~/crypto-browserify/index.js?:22:23) 
    at _rng (webpack:///./~/node-uuid/uuid.js?:60:53) 
    at eval (webpack:///./~/node-uuid/uuid.js?:121:20) 
    at Object.eval (webpack:///./~/node-uuid/uuid.js?:272:3) 
    at eval (webpack:///./~/node-uuid/uuid.js?:274:30) 
    at Object.<anonymous> (/Users/tomi/Github/apps/react-app-test/server/bundle.js:545:2) 
    at __webpack_require__ (/Users/tomi/Github/apps/react-app-test/server/bundle.js:20:30) 
    at eval (webpack:///./~/graphql-tools/dist/mock.js?:18:17) 
    at Object.<anonymous> (/Users/tomi/Github/apps/react-app-test/server/bundle.js:341:2) 
+0

私はこれをWebPackでやったことはありませんが、私はBrowserify(これはずっと前)でやっています。バンドルには、組み込みのNodeモジュールを模倣するBrowserifyモジュール( 'crypto-browserify'など)が含まれているようです。一方、組み込みのものが必要です。 WebPackでどのように管理しているのか分かりませんが、それが問題です。 WebPack/Nodeに関連する投稿[here](http://jlong​​ster.com/Backend-Apps-with-Webpack_Part-I)があります。 – cartant

+0

私はブラウザでも処理しようとしましたが、結果は同じでした; /これらのモジュールを強制的にノードからロードする方法はわかりません。 – tomitrescak

+0

私の頭の上から外れて、私は覚えていない。私は、後で、私が何をしたのかを見るために、まわりを突っ込む。残念ながら、もう少し前ですが、組み込み関数とバイナリモジュールのバンドルを避けるために、Browserifyを使って作業をしていることを覚えています。 – cartant

答えて

0

後期のゲームではなくcryptoは、ブラウザの代わりに置き換えられているという事実は、ビルドがある理由です失敗する。その後、

browserify index.js --exclude crypto -o build.js 

WebPACKのために、暗号除くも動作するはずです:私は意図はNodeJSでそれを実行することですので、単純にビルドからそのモジュールを除外してbrowserifyで、この問題を解決し、予想通り、暗号モジュールがちょうど必要となります。

関連する問題