أتلقى الخطأ التالي عند الإنشاء باستخدام حزمة الويب:
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 كعالة. ما الحل الذي لدي؟
يبدو أن حزمة الويب لا تكتشف أن hiredis هو تبعية اختيارية لـ node_redis.
ما هو شكل حزمة الويب الخاصة بك؟ لقد وجدت مقالًا مثيرًا للاهتمام يوضح كيف يجب عليك فقط حزم الكود الخاص بك وترك أي شيء في node_modules
كما هو. بهذه الطريقة لن تقوم بسحب وحدات الطرف الثالث وتعبئتها في ملف البناء النهائي. ما لم تكن ، بالطبع ، تحاول القيام بذلك.
تم إغلاق هذا لأنه لم تكن هناك استجابة أخرى وليست مشكلة في 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$/)
],
التعليق الأكثر فائدة
حدث نفس الخطأ ، ونجح في استعارة الحل من هنا .
لذا فإن المقتطف ذي الصلة في
webpack.config.js
يبدو كالتالي:وأيضا قمت بإنشاء ملف
aliases/hiredis.js
يحتوي على المحتوى التالي: