Node-redis: خطأ أثناء البناء باستخدام حزمة الويب

تم إنشاؤها على ٢٨ يوليو ٢٠١٥  ·  8تعليقات  ·  مصدر: NodeRedis/node-redis

أتلقى الخطأ التالي عند الإنشاء باستخدام حزمة الويب:

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 كومينتر

يبدو أن حزمة الويب لا تكتشف أن hiredis هو تبعية اختيارية لـ node_redis.

ما هو شكل حزمة الويب الخاصة بك؟ لقد وجدت مقالًا مثيرًا للاهتمام يوضح كيف يجب عليك فقط حزم الكود الخاص بك وترك أي شيء في node_modules كما هو. بهذه الطريقة لن تقوم بسحب وحدات الطرف الثالث وتعبئتها في ملف البناء النهائي. ما لم تكن ، بالطبع ، تحاول القيام بذلك.

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

تم إغلاق هذا لأنه لم تكن هناك استجابة أخرى وليست مشكلة في node-redis

لدي نفس المشكلة؛ يبدو أن حزمة الويب تفشل فقط مع node_redis (أنا أستخدم حزمة الويب بنجاح لحزم بقية الواجهة الخلفية الخاصة بي باستخدام webpack-node-externals لتخطي node_module deps).

~~~~
خطأ في ./~/redis-commands/index.js
الوحدة غير موجودة: خطأ: لا يمكن حل "ملف" أو "دليل". / الأوامر في العرض التوضيحي / node_modules / redis-command
@ ./~/redis-commands/index.js 3: 15-36

خطأ في ./~/redis-parser/lib/hiredis.js
الوحدة غير موجودة: خطأ: لا يمكن حل الوحدة النمطية 'hiredis' في العرض التوضيحي / node_modules / redis-parser / lib
@ ./~/redis-parser/lib/hiredis.js 3: 14-32
~~~~

blainsmith التكوين الخاص بي هنا:

~~~~
const nodeExternals = تتطلب ('webpack-node-externals') ؛
module.exports = {
الهدف: "عقدة" ،

عوامل خارجية: [nodeExternals ()] ،

حل: {
الامتدادات: [''، '.js']،
وحدات الدلائل: [
'node_modules'
]
} ،

وحدة: {
الحل: {
الجذر: path.join (__ dirname، 'node_modules')
} ،
لوادر: [
{
الاختبار: /.json$/ ،
لودر: 'json-loader'
} ،
{
الاختبار: /.js$/ ،
استبعاد: [/ node_modules /] ،
محمل: 'babel-loader'
} ،
]
} ،
}) ؛
~~~~

تعاني من نفس الشيء هنا. يتم حل التبعيات الأخرى.

يعمل سكربت dev ، وفشل البرنامج build: dev script. نفس 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 ",

ديس

"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 هو تبعية اختيارية ، ولا أريد تثبيت التبعيات غير الضرورية ، لكنني أيضًا لا أريد اختراق الأسماء المستعارة ، فإن أبسط حل هو استخدام حزمة الويب .gnorePlugin ().

أضف إلى webpack.config.js

plugins: [
    new webpack.IgnorePlugin(/^hiredis$/)
  ],
هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات

القضايا ذات الصلة

Stono picture Stono  ·  6تعليقات

Atala picture Atala  ·  3تعليقات

jackycchen picture jackycchen  ·  4تعليقات

betimer picture betimer  ·  5تعليقات

ghost picture ghost  ·  3تعليقات