Node-redis: Erro ao construir com webpack

Criado em 28 jul. 2015  ·  8Comentários  ·  Fonte: NodeRedis/node-redis

Estou recebendo o seguinte erro ao construir com o 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

Não quero instalar o hiredis como agência. Que solução eu tenho?

question

Comentários muito úteis

Tive o mesmo erro e fiz com que funcionasse pegando emprestada a solução daqui .

Portanto, o snippet relevante em webpack.config.js parece com este:

resolve: {
  alias: {
    'hiredis': path.join(__dirname, 'aliases/hiredis.js')
  }
}

E também criei o arquivo aliases/hiredis.js que tem o seguinte conteúdo:

export default null

Todos 8 comentários

Parece que o webpack não está detectando que hiredis é uma dependência opcional de node_redis.

Como é a configuração do seu webpack? Achei um artigo interessante que mostra como você só deve empacotar seu próprio código e deixar qualquer coisa em node_modules como está. Dessa forma, você não está puxando módulos de terceiros e empacotando-os em seu arquivo de construção final. A menos, é claro, que você esteja tentando fazer isso.

http://jlongster.com/Backend-Apps-with-Webpack--Part-I

Fechar isso porque não houve mais resposta e não é um problema com o node-redis

Eu tenho o mesmo problema; webpack só parece falhar com node_redis (estou usando webpack com sucesso para empacotar o resto do meu backend usando webpack-node-externals para pular deps node_module).

~~~~
ERROR in ./~/redis-commands/index.js
Módulo não encontrado: Erro: Não é possível resolver 'arquivo' ou 'diretório' ./commands em demo / node_modules / redis-comandos
@ ./~/redis-commands/index.js 3: 15-36

ERROR in ./~/redis-parser/lib/hiredis.js
Módulo não encontrado: Erro: Não é possível resolver o módulo 'hiredis' em demo / node_modules / redis-parser / lib
@ ./~/redis-parser/lib/hiredis.js 3: 14-32
~~~~

@blainsmith minha configuração aqui:

~~~~
const nodeExternals = require ('webpack-node-externals');
module.exports = {
alvo: 'nó',

externos: [nodeExternals ()],

resolver: {
extensões: ['', '.js'],
modulesDirectories: [
'node_modules'
]
},

módulo: {
resolveLoader: {
root: path.join (__ dirname, 'node_modules')
},
carregadores: [
{
teste: /.json$/,
loader: 'json-loader'
},
{
teste: /.js$/,
excluir: [/ node_modules /],
loader: 'babel-loader'
},
]
},
});
~~~~

Experimentando a mesma coisa aqui. Outras dependências foram resolvidas.

O script dev funciona, mas o script build: dev falha. Mesmo webpack.config.js.

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",

Erro de compilação

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

Tive o mesmo erro e fiz com que funcionasse pegando emprestada a solução daqui .

Portanto, o snippet relevante em webpack.config.js parece com este:

resolve: {
  alias: {
    'hiredis': path.join(__dirname, 'aliases/hiredis.js')
  }
}

E também criei o arquivo aliases/hiredis.js que tem o seguinte conteúdo:

export default null
yarn add hiredis
npm i --save hiredis

Solução simples sem hack

Vendo que hiredis é uma dependência opcional, não quero instalar dependências desnecessárias, mas também não quero hackear aliases, a solução mais simples é utilizar webpack.IgnorePlugin ().

Adicionar a webpack.config.js

plugins: [
    new webpack.IgnorePlugin(/^hiredis$/)
  ],
Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Mickael-van-der-Beek picture Mickael-van-der-Beek  ·  6Comentários

dotSlashLu picture dotSlashLu  ·  5Comentários

betimer picture betimer  ·  5Comentários

ghost picture ghost  ·  3Comentários

shmendo picture shmendo  ·  6Comentários