J'obtiens l'erreur suivante lors de la construction avec 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
Je ne souhaite pas installer hiredis en tant que dépendance. Quelle solution ai-je?
On dirait que webpack ne détecte pas que hiredis est une dépendance facultative de node_redis.
À quoi ressemble votre configuration Webpack? J'ai trouvé un article intéressant montrant comment vous ne devez empaqueter que votre propre code et laisser n'importe quoi dans node_modules
tel quel. De cette façon, vous n'extrayez pas de modules tiers et ne les regroupez pas dans votre fichier de construction final. À moins, bien sûr, que vous n'essayiez de le faire.
Clôturer cela car il n'y avait aucune autre réponse et ce n'est pas un problème avec node-redis
J'ai le même problème; webpack ne semble échouer qu'avec node_redis (j'utilise webpack avec succès pour empaqueter le reste de mon backend en utilisant webpack-node-externals pour ignorer les deps node_module).
~~~~
ERREUR dans ./~/redis-commands/index.js
Module non trouvé: Erreur: Impossible de résoudre 'fichier' ou 'répertoire' ./commands dans demo / node_modules / redis-commands
@ ./~/redis-commands/index.js 3: 15-36
ERREUR dans ./~/redis-parser/lib/hiredis.js
Module introuvable: Erreur: Impossible de résoudre le module 'hiredis' dans demo / node_modules / redis-parser / lib
@ ./~/redis-parser/lib/hiredis.js 3: 14-32
~~~~
@blainsmith ma configuration ici:
~~~~
const nodeExternals = require ('webpack-node-externals');
module.exports = {
cible: 'nœud',
externes: [nodeExternals ()],
résoudre: {
extensions: ['', '.js'],
modulesDirectories: [
'node_modules'
]
},
module: {
résoudreLoader: {
root: path.join (__ dirname, 'node_modules')
},
chargeurs: [
{
test: /.json$/,
chargeur: 'json-loader'
},
{
test: /.js$/,
exclure: [/ node_modules /],
chargeur: 'babel-loader'
},
]
},
});
~~~~
Vivre la même chose ici. D'autres dépendances sont résolues.
Le script dev fonctionne, le script build: dev échoue. Même webpack.config.js.
Les scripts
"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",
Erreur de construction
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
J'ai eu la même erreur et je l'ai fait fonctionner en empruntant la solution d' ici .
Ainsi, l'extrait de code pertinent dans webpack.config.js
ressemble à ceci:
resolve: {
alias: {
'hiredis': path.join(__dirname, 'aliases/hiredis.js')
}
}
Et aussi j'ai créé le fichier aliases/hiredis.js
qui a le contenu suivant:
export default null
yarn add hiredis
npm i --save hiredis
Solution simple sans hack
Étant donné que hiredis est une dépendance facultative, je ne veux pas installer de dépendances inutiles, mais je ne veux pas non plus pirater les alias, la solution la plus simple est d'utiliser webpack.IgnorePlugin ().
Ajouter à webpack.config.js
plugins: [
new webpack.IgnorePlugin(/^hiredis$/)
],
Commentaire le plus utile
J'ai eu la même erreur et je l'ai fait fonctionner en empruntant la solution d' ici .
Ainsi, l'extrait de code pertinent dans
webpack.config.js
ressemble à ceci:Et aussi j'ai créé le fichier
aliases/hiredis.js
qui a le contenu suivant: