webpackでビルドすると、次のエラーが発生します。
ERROR in ./~/redis/lib/parser/hiredis.js
Module not found: Error: Cannot resolve module 'hiredis' in C:\NodeServer\AppInTheWild\node_modules\redis\lib\parser
@ ./~/redis/lib/parser/hiredis.js 3:14-32
依存関係としてhiredisをインストールしたくありません。 どのような解決策がありますか?
webpackは、hiredisがnode_redisのオプションの依存関係であることを検出していないようです。
あなたのwebpack設定はどのようなものですか? 独自のコードのみをパッケージ化し、 node_modules
何でもそのままにしておく方法を示す興味深い記事を見つけました。 このようにして、サードパーティのモジュールを取り込んで最終的なビルドファイルにパッケージ化する必要はありません。 もちろん、これを行おうとしているのでない限り。
それ以上の応答がなく、node-redisの問題ではないため、これを閉じます
私も同じ問題を抱えています。 webpackはnode_redisでのみ失敗するようです(webpackを正常に使用してwebpack-node-externalsを使用してバックエンドの残りをパッケージ化し、node_module depsをスキップしています)。
~~~~
./~/redis-commands/index.jsのエラー
モジュールが見つかりません:エラー:「ファイル」または「ディレクトリ」を解決できません。/demo/node_modules/redis-commandsのコマンド
@ ./~/redis-commands/index.js 3:15-36
./~/redis-parser/lib/hiredis.jsのエラー
モジュールが見つかりません:エラー:demo / node_modules / redis-parser / libのモジュール「hiredis」を解決できません
@ ./~/redis-parser/lib/hiredis.js 3:14-32
~~~~
@blainsmithここに私の設定:
~~~~
const nodeExternals = require( 'webpack-node-externals');
module.exports = {
ターゲット: 'ノード'、
外部:[nodeExternals()]、
解決:{
拡張子:[''、 '。js']、
modulesDirectories:[
'node_modules'
]
}、
モジュール:{
resolveLoader:{
ルート:path.join(__ dirname、 'node_modules')
}、
ローダー:[
{{
テスト:/。json $ /、
ローダー: 'json-loader'
}、
{{
テスト:/。js $ /、
除外:[/ node_modules /]、
ローダー: 'babel-loader'
}、
]
}、
});
~~~~
ここで同じことを体験します。 その他の依存関係は解決されます。
devスクリプトは機能しますが、 build:devスクリプトは失敗します。 同じwebpack.config.js。
スクリプト
"dev": "DEBUG=* && webpack-dev-server --bail --config webpack.config.js --host 0.0.0.0",
"build:dev": "webpack --config webpack.config.js ",
Deps
"botkit-storage-redis": "1.1.0",
ビルドエラー
ERROR in ./~/redis-parser/lib/hiredis.js
Module not found: Error: Can't resolve 'hiredis' in '/path/to/node_modules/redis-parser/lib'
@ ./~/redis-parser/lib/hiredis.js 3:14-32
@ ./~/redis-parser/lib/parser.js
@ ./~/redis-parser/index.js
@ ./~/redis/index.js
@ ./~/botkit-storage-redis/src/index.js
@ ./~/botkit-storage-redis/index.js
@ ./src/index.js
同じエラーが発生し、ここからソリューションを借用することで機能し
したがって、 webpack.config.js
の関連するスニペットは次のようになります。
resolve: {
alias: {
'hiredis': path.join(__dirname, 'aliases/hiredis.js')
}
}
また、次の内容のファイルaliases/hiredis.js
を作成しました。
export default null
yarn add hiredis
npm i --save hiredis
ハックのないシンプルなソリューション
Hiredisはオプションの依存関係であり、不要な依存関係をインストールしたくないが、エイリアスをハッキングしたくないので、最も簡単な解決策はwebpack.IgnorePlugin()を利用することです。
webpack.config.jsに追加します
plugins: [
new webpack.IgnorePlugin(/^hiredis$/)
],
最も参考になるコメント
同じエラーが発生し、ここからソリューションを借用することで機能し
したがって、
webpack.config.js
の関連するスニペットは次のようになります。また、次の内容のファイル
aliases/hiredis.js
を作成しました。