2017-02-14 8 views
0

Webパッケージは、ソースをバンドルするときに 'sha3'モジュールを解決できないため警告します。 sha3 libraryWebpackのバンドルsha3 /バイナリモジュール

$ npm run build 
WARNING in ./~/keccakjs/index.js 
Module not found: Error: Can't resolve 'sha3' in '<PROJ>\node_modules\keccakjs' 
@ ./~/keccakjs/index.js 2:19-34 
@ ./~/<lib>/index.js 
@ ./lib/<file>.js 

理由は何JSファイルを持っていません。

作成ライブラリ< projの> \ node_modules \ sha3 \ \リリース\のsha3.libを構築し、< projのオブジェクト> \ node_modules \ sha3 \ \リリース\のsha3.exp

に構築プロジェクトでrequire('sha3')を実行できますが、webpackで解決できません。

webpackがlibsをどのように解決するかについては、docs hereを見ました。

誰かが私のバンドルに/にsha3を含める方法を教えてもらえますか?

私のWebPACKの設定:

module.exports = { 
    target: 'node', 
    entry: "./<lib>.js", 
    devtool: "source-map", 
    node: { 
     __dirname: false, 
     __filename: false, 
    }, 
    output: { 
     path: "./dist", 
     filename: "<lib>.min.js" 
    }, 
    plugins: [ 
     new webpack.optimize.OccurrenceOrderPlugin(), 
     new webpack.DefinePlugin({ 
      'process.env.NODE_ENV': JSON.stringify('production') 
     }) 
    ] 
} 

答えて

0

何:

resolve: { 
    alias: { 
     sha3: path.join(__dirname,'node_modules/sha3/build/Release/sha3.node') 
    }, 
}, 
module: { 
    rules: [ 
     {test: /\.node$/, use: 'node-loader'}, 
    ] 
}, 

このようにして、どのファイルをインポートするか、解決できなかったときにそれを伝えましたsha3。そして、ファイル.nodenode-loaderパッケージ!

1

hereからのWebPACKからバイナリローダーを使用してみてください。そして、次のことができます。

1)あなたのWebPACKの設定でローダーを定義します。

module.exports = { 
    target: 'node', 
    entry: "./<lib>.js", 
    devtool: "source-map", 
    node: { 
     __dirname: false, 
     __filename: false, 
    }, 
    output: { 
     path: "./dist", 
     filename: "<lib>.min.js" 
    }, 
    plugins: [ 
     new webpack.optimize.OccurrenceOrderPlugin(), 
     new webpack.DefinePlugin({ 
      'process.env.NODE_ENV': JSON.stringify('production') 
     }) 
    ], 
    module: { 
     loaders: [ 
      { test: /sha3$/, loader: 'binary' } 
     ] 
    } 
} 

2)あなたのインポートに直接ローダーを使用します。実際に私のためにして働くことになった

require('binary!sha3'); 
+0

有望ですね! –

+0

'設定の取得には不明なプロパティ 'loaders''がありますか? –

+1

おっと、申し訳ありませんが、モジュールオブジェクトの内部にあるはずですが、私はmodule.exportsを見て少し混乱していると思います。編集されました! –

関連する問題