Node-redis: Ошибка при сборке с помощью webpack

Созданный на 28 июл. 2015  ·  8Комментарии  ·  Источник: NodeRedis/node-redis

При сборке с помощью 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 в качестве зависимости. Какое у меня решение?

question

Самый полезный комментарий

Была такая же ошибка, и она заработала, позаимствовав решение здесь .

Таким образом, соответствующий фрагмент в webpack.config.js выглядит так:

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

А также я создал файл aliases/hiredis.js со следующим содержимым:

export default null

Все 8 Комментарий

Похоже, что webpack не определяет, что hiredis является необязательной зависимостью node_redis.

Какая у вас конфигурация веб-пакета? Я нашел интересную статью, в которой показано, как следует упаковать только свой собственный код и оставить все в node_modules как есть. Таким образом, вы не втягиваете сторонние модули и не упаковываете их в свой окончательный файл сборки. Если, конечно, вы не пытаетесь это сделать.

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

Закрытие, поскольку больше не было ответа, и это не проблема с node-redis

У меня такая же проблема; webpack, похоже, терпит неудачу только с node_redis (я успешно использую webpack для упаковки остальной части моего бэкенда, используя webpack-node-externals, чтобы пропустить node_module deps).

~~~~
ОШИБКА в ./~/redis-commands/index.js
Модуль не найден: ошибка: не удается разрешить 'файл' или 'каталог' ./commands в demo / node_modules / redis-commands
@ ./~/redis-commands/index.js 3: 15-36

ОШИБКА в ./~/redis-parser/lib/hiredis.js
Модуль не найден: ошибка: не удается разрешить модуль 'hiredis' в demo / node_modules / redis-parser / lib
@ ./~/redis-parser/lib/hiredis.js 3: 14-32
~~~~

@blainsmith моя конфигурация здесь:

~~~~
const nodeExternals = require ('webpack-node-externals');
module.exports = {
цель: 'узел',

внешние: [nodeExternals ()],

разрешить: {
расширения: ['', '.js'],
modulesDirectories: [
'node_modules'
]
},

модуль: {
resolveLoader: {
корень: путь.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$/)
  ],
Была ли эта страница полезной?
0 / 5 - 0 рейтинги

Смежные вопросы

strumwolf picture strumwolf  ·  4Комментарии

aletorrado picture aletorrado  ·  6Комментарии

adamgajzlerowicz picture adamgajzlerowicz  ·  4Комментарии

Atala picture Atala  ·  3Комментарии

Mickael-van-der-Beek picture Mickael-van-der-Beek  ·  6Комментарии