Recibo el siguiente error al compilar con 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
No quiero instalar hiredis como una dependencia. ¿Qué solución tengo?
Parece que el paquete web no detecta que hiredis es una dependencia opcional de node_redis.
¿Cómo es la configuración de su paquete web? Encontré un artículo interesante que muestra cómo solo debe empaquetar su propio código y dejar cualquier cosa en node_modules
como está. De esta manera, no está extrayendo módulos de terceros y empaquetándolos en su archivo de compilación final. A menos que, por supuesto, esté intentando hacer esto.
Cerrando esto porque no hubo más respuesta y no es un problema con node-redis
Tengo el mismo problema; webpack solo parece fallar con node_redis (estoy usando webpack con éxito para empaquetar el resto de mi backend usando webpack-node-externals para omitir node_module deps).
~~~~
ERROR en ./~/redis-commands/index.js
Módulo no encontrado: Error: No se puede resolver 'archivo' o 'directorio' ./commands en demo / node_modules / redis-commands
@ ./~/redis-commands/index.js 3: 15-36
ERROR en ./~/redis-parser/lib/hiredis.js
Módulo no encontrado: Error: No se puede resolver el módulo 'hiredis' en demo / node_modules / redis-parser / lib
@ ./~/redis-parser/lib/hiredis.js 3: 14-32
~~~~
@blainsmith mi configuración aquí:
~~~~
const nodeExternals = require ('webpack-node-externals');
module.exports = {
objetivo: 'nodo',
externos: [nodeExternals ()],
resolver: {
extensiones: ['', '.js'],
módulosDirectorios: [
'módulos_nodo'
]
},
módulo: {
resolveLoader: {
root: path.join (__ dirname, 'node_modules')
},
cargadores: [
{
prueba: /.json$/,
cargador: 'json-loader'
},
{
prueba: /.js$/,
excluir: [/ node_modules /],
cargador: 'babel-loader'
},
]
},
});
~~~~
Experimentando lo mismo aquí. Se resuelven otras dependencias.
El script dev funciona, el script build: dev falla. Mismo webpack.config.js.
Guiones
"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 de compilación
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
Tuve el mismo error y lo hice funcionar tomando prestada la solución de aquí .
Entonces, el fragmento relevante en webpack.config.js
ve así:
resolve: {
alias: {
'hiredis': path.join(__dirname, 'aliases/hiredis.js')
}
}
Y también creé el archivo aliases/hiredis.js
que tiene el siguiente contenido:
export default null
yarn add hiredis
npm i --save hiredis
Solución simple sin un truco
Ver que hiredis es una dependencia opcional, y no quiero instalar dependencias innecesarias, pero tampoco quiero piratear alias, la solución más simple es utilizar webpack.IgnorePlugin ().
Agregar a webpack.config.js
plugins: [
new webpack.IgnorePlugin(/^hiredis$/)
],
Comentario más útil
Tuve el mismo error y lo hice funcionar tomando prestada la solución de aquí .
Entonces, el fragmento relevante en
webpack.config.js
ve así:Y también creé el archivo
aliases/hiredis.js
que tiene el siguiente contenido: