Saya mendapatkan kesalahan berikut saat membangun dengan 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
Saya tidak ingin memasang hiredis sebagai depency. Solusi apa yang saya miliki?
Sepertinya webpack tidak mendeteksi bahwa hiredis adalah ketergantungan opsional node_redis.
Seperti apa konfigurasi webpack Anda? Saya menemukan artikel menarik yang menunjukkan bagaimana Anda seharusnya hanya mengemas kode Anda sendiri dan membiarkan apapun di node_modules
apa adanya. Dengan cara ini Anda tidak menarik modul pihak ketiga dan memaketkannya ke dalam file build akhir Anda. Kecuali, tentu saja, Anda mencoba melakukan ini.
Menutup ini karena tidak ada tanggapan lebih lanjut dan itu bukan masalah dengan node-redis
Saya memiliki masalah yang sama; webpack sepertinya hanya gagal dengan node_redis (saya berhasil menggunakan webpack untuk mengemas sisa backend saya menggunakan webpack-node-externals untuk melewati node_module deps).
~~~~
KESALAHAN di ./~/redis-commands/index.js
Modul tidak ditemukan: Kesalahan: Tidak dapat menyelesaikan 'file' atau 'direktori' ./commands di demo / node_modules / redis-commands
@ ./~/redis-commands/index.js 3: 15-36
KESALAHAN di ./~/redis-parser/lib/hiredis.js
Modul tidak ditemukan: Kesalahan: Tidak dapat menyelesaikan modul 'hiredis' di demo / node_modules / redis-parser / lib
@ ./~/redis-parser/lib/hiredis.js 3: 14-32
~~~~
@blainsmith konfigurasi saya di sini:
~~~~
const nodeExternals = membutuhkan ('webpack-node-externals');
module.exports = {
target: 'node',
externals: [nodeExternals ()],
menyelesaikan: {
ekstensi: ['', '.js'],
modulesDirectories: [
'node_modules'
]
},
modul: {
ResolLoader: {
root: path.join (__ dirname, 'node_modules')
},
pemuat: [
{
tes: /.json$/,
loader: 'json-loader'
},
{
tes: /.js$/,
kecualikan: [/ node_modules /],
loader: 'babel-loader'
},
]
},
});
~~~~
Mengalami hal yang sama di sini. Dependensi lain diselesaikan.
Skrip dev berfungsi, skrip build: dev gagal. Webpack.config.js yang sama.
Script
"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",
Kesalahan pembuatan
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
Memiliki kesalahan yang sama, dan membuatnya berfungsi dengan meminjam solusi dari sini .
Jadi potongan yang relevan di webpack.config.js
terlihat seperti ini:
resolve: {
alias: {
'hiredis': path.join(__dirname, 'aliases/hiredis.js')
}
}
Dan juga saya membuat file aliases/hiredis.js
yang memiliki konten berikut:
export default null
yarn add hiredis
npm i --save hiredis
Solusi sederhana tanpa retasan
Melihat hiredis adalah ketergantungan opsional, dan saya tidak ingin menginstal dependensi yang tidak perlu, tetapi saya juga tidak ingin meretas alias, solusi paling sederhana adalah menggunakan webpack.IgnorePlugin ().
Tambahkan ke webpack.config.js
plugins: [
new webpack.IgnorePlugin(/^hiredis$/)
],
Komentar yang paling membantu
Memiliki kesalahan yang sama, dan membuatnya berfungsi dengan meminjam solusi dari sini .
Jadi potongan yang relevan di
webpack.config.js
terlihat seperti ini:Dan juga saya membuat file
aliases/hiredis.js
yang memiliki konten berikut: