لا يعمل هذا المكون الإضافي مع المكون الإضافي الذي يحتوي على بناء جملة غير متزامن / انتظار ناتج عن مشكلة تجزئة الكائن و tscache.ts . أعتقد أنه من الصعب إصلاح تجزئة الكائن لأنه لا توجد طريقة لاكتشاف وظيفة غير متزامنة الآن. فهل هناك بديل بدون تجزئة الكائن؟
import svgr from '@svgr/rollup';
import typescript from 'rollup-plugin-typescript2';
export default {
...
plugins: [
replace({ 'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV) }),
svgr(),
typescript({
useTsconfigDeclarationDir: true,
})
],
...
};
لا يوجد صلة بالموضوع.
لا يوجد صلة بالموضوع.
[!] (rpt2 plugin) Error: Unknown object type "asyncfunction"
src/components/atoms/Icon/index.ts
Error: Unknown object type "asyncfunction"
at Object._object (/Users/vwxyutarooo/Projects/kouzoh/mercari-web-jp-component/node_modules/rollup-plugin-typescript2/node_modules/object-hash/index.js:218:17)
at Object._function (/Users/vwxyutarooo/Projects/kouzoh/mercari-web-jp-component/node_modules/rollup-plugin-typescript2/node_modules/object-hash/index.js:319:14)
at Object.dispatch (/Users/vwxyutarooo/Projects/kouzoh/mercari-web-jp-component/node_modules/rollup-plugin-typescript2/node_modules/object-hash/index.js:185:30)
at /Users/vwxyutarooo/Projects/kouzoh/mercari-web-jp-component/node_modules/rollup-plugin-typescript2/node_modules/object-hash/index.js:246:18
at Array.forEach (<anonymous>)
at Object._object (/Users/vwxyutarooo/Projects/kouzoh/mercari-web-jp-component/node_modules/rollup-plugin-typescript2/node_modules/object-hash/index.js:242:21)
at Object.dispatch (/Users/vwxyutarooo/Projects/kouzoh/mercari-web-jp-component/node_modules/rollup-plugin-typescript2/node_modules/object-hash/index.js:185:30)
at /Users/vwxyutarooo/Projects/kouzoh/mercari-web-jp-component/node_modules/rollup-plugin-typescript2/node_modules/object-hash/index.js:260:23
at Array.forEach (<anonymous>)
at Object._array (/Users/vwxyutarooo/Projects/kouzoh/mercari-web-jp-component/node_modules/rollup-plugin-typescript2/node_modules/object-hash/index.js:259:20)
أضفت حلاً لتجاهل أي شيء لا تستطيع تجزئة الكائن معالجته (انظر فرع objecthash ، objectHashIgnoreUnknownHack
option). هذا يمكن أن يجعل ذاكرة التخزين المؤقت قديمة ، لذلك ليس حلاً جيدًا على المدى الطويل.
تضمين التغريدة
يجب أن أعترف أنني مندهش من أن هذا لم يكن يمثل مشكلة حتى الآن لأن الوظائف غير المتزامنة شائعة للغاية الآن 😀. وهذا هو السبب أيضًا في أنني أعتقد أن تجاهلها ببساطة سيؤدي إلى قدر كبير من مشكلات ذاكرة التخزين المؤقت. كان PR الذي قدمته إلى تجزئة الكائن منذ بعض الوقت نتيجة لهذه المشكلة بالذات ، وأود أن أقترح عليك إزالة التبعية على تجزئة الكائن. أنا على ثقة تامة من أن PR الذي تم إرساله منذ بعض الوقت سيعمل بشكل جيد لأنه يتطابق مع نفس القيمة الموضحة في رسالة الخطأ واجتاز كلا من اختبارات الوحدة وحل المشكلات في هذا المكون الإضافي ، لذلك لا تتردد في الاعتماد على العلاقات العامة بدلاً من حزمة NPM هنا.
vwxyutarooo ، الحل الفوري هو تعيين clean: true
في التكوين لتجاوز ذاكرة التخزين المؤقت تمامًا. بدلاً من ذلك (آسف للمقبس) قمت ببناء https://github.com/wessberg/rollup-plugin-ts والذي سيعمل أيضًا بشكل جيد
wessberg نعم ، أعتقد أنه لا يوجد العديد من الإضافات التراكمية غير
هل تعرف طريقة أفضل لتجزئة الأشياء؟ أحتاج إلى إنشاء مفتاح ذاكرة تخزين مؤقت يعتمد جزئيًا على كائن تكوين التراكمية (وبالتالي يحتوي على مصدر جميع المكونات الإضافية المستخدمة) الذي يتم تمريره عند بدء التشغيل.
راجع للشغل ، للتوضيح - تنطبق المشكلة على الأشياء غير المتزامنة في تكوين التراكمية نفسه. لا يمثل عدم التزامن في الشفرة التي يتم تحويلها مشكلة ، لأن الشفرة مجزأة بناءً على النص المصدر.
حسنًا ، يمكنك تطبيق sha1 على نتيجة JSON.stringify على التكوين بالكامل باستخدام بديل مخصص يقوم بتعيين المكونات الإضافية إلى خاصية name
التي أنا متأكد من أنها مطلوبة.
على سبيل المثال ، التكوين التراكمي التالي:
{
// ...
treeshake: true,
plugins: [
myPlugin1(),
myPlugin2()
],
// ...
}
يمكن تحويلها إلى تمثيل JSON التالي:
{
"treeshake": true,
"plugins": [
"name-of-my-plugin-1",
"name-of-my-plugin-2"
]
}
وبعد ذلك يمكنك تطبيق sha1 والحصول على سلسلة base64 أو شيء من هذا القبيل يمكنك استخدامه كمفتاح ذاكرة التخزين المؤقت؟
كنت أفكر على هذا المنوال ، لكن ألن يؤدي ذلك إلى إزالة المزيد من الأشياء من النظر في ذاكرة التخزين المؤقت؟ أظن أن object-hash
تم إنشاؤه على وجه التحديد لأن JSON.stringify
يتخلص من أي شيء ليس خاصية أو مصفوفة أو قاموسًا ليس به قيمة عادية - لا يوجد شيء آخر في مواصفات json.
أفترض أنه يمكنني دمج تجزئة package-lock,json
وما يعادله من الغزل ، إذا كانت هناك طريقة موثوقة للعثور عليها. (للتخفيف من تأثير الخيار objectHashIgnoreUnknownHack
)
شكرا يا رفاق مناقشة حول هذه المسألة. في الواقع ، لا تتجاوز جرعة الخيار clean: true
عملية ذاكرة التخزين المؤقت ، لذا فهي لا تعمل حتى لبعض الوقت. ومع ذلك ، قد يكون ignoreUnknown
الطريقة المناسبة لإصلاح هذه المشكلة كما يقول ezolenko . سأنتظر 0.16.2 على أي حال!
vwxyutarooo ، كنت clean: true
يستخدم إستراتيجية noop cache. هذا ما أتذكره أن ezolenko تم تنفيذه منذ بعض الوقت. إذا كان لا يزال يحاول حساب مفتاح ذاكرة التخزين المؤقت من تكوين التراكمية ، فإن هذا السلوك يحتاج إلى النظر فيه في رأيي
لا أعرف كيف أثر ذلك على نتيجة تجزئة الكائن ، ولكن الخيار objectHashIgnoreUnknownHack
في الفرع objecthash
يناسبني.
لقد قمت بإعادة صياغة ذاكرة التخزين المؤقت قليلاً حتى لا يقوم clean: true
باستدعاء تجزئة الكائن ودمج كل شيء في العنصر الرئيسي. سأطلق سراحه في غضون أيام قليلة
في 0.17.0 الآن
لحل آخر لا يستخدم الاختراق objectHashIgnoreUnknownHack
، واجهت هذه المشكلة باستخدام rollup-plugin-require-context
، ويبدو أن المقتطف التالي يعمل:
import requireContextORIGINAL from 'rollup-plugin-require-context'
const requireContext = (options) => {
const plugin = requireContextORIGINAL(options)
return {
name: plugin.name,
transform(code, id) {
return plugin.transform(code, id)
}
}
}
وبالتحديد ، جعل transform
وظيفة عادية تعيد الوعد.
اعتقدت أنني سأضيف تحديثًا للأشخاص هنا أن السبب الجذري هنا قد تم إصلاحه أخيرًا في https://github.com/puleos/object-hash/pull/90 (مشابه جدًا لـ https://github.com/puleos/ تجزئة الكائن / السحب / 68 المشار إليه أعلاه) وهنا في رقم 203. لا حاجة لاستخدام objectHashIgnoreUnknownHack
لدعم المكونات الإضافية غير المتزامنة ولا مزيد من مشكلات ذاكرة التخزين المؤقت - تم إصداره للتو كـ v0.26.0 🎉 😄
التعليق الأكثر فائدة
يجب أن أعترف أنني مندهش من أن هذا لم يكن يمثل مشكلة حتى الآن لأن الوظائف غير المتزامنة شائعة للغاية الآن 😀. وهذا هو السبب أيضًا في أنني أعتقد أن تجاهلها ببساطة سيؤدي إلى قدر كبير من مشكلات ذاكرة التخزين المؤقت. كان PR الذي قدمته إلى تجزئة الكائن منذ بعض الوقت نتيجة لهذه المشكلة بالذات ، وأود أن أقترح عليك إزالة التبعية على تجزئة الكائن. أنا على ثقة تامة من أن PR الذي تم إرساله منذ بعض الوقت سيعمل بشكل جيد لأنه يتطابق مع نفس القيمة الموضحة في رسالة الخطأ واجتاز كلا من اختبارات الوحدة وحل المشكلات في هذا المكون الإضافي ، لذلك لا تتردد في الاعتماد على العلاقات العامة بدلاً من حزمة NPM هنا.
vwxyutarooo ، الحل الفوري هو تعيين
clean: true
في التكوين لتجاوز ذاكرة التخزين المؤقت تمامًا. بدلاً من ذلك (آسف للمقبس) قمت ببناء https://github.com/wessberg/rollup-plugin-ts والذي سيعمل أيضًا بشكل جيد