تایپاسکریپت - ماژولها پس از ساخت برنامه الکترون روی مک پیدا نمیشوند
من الان روی یک برنامه کوچک الکترون کار میکنم که از Vue و TypeScript استفاده میکند. وقتی برنامه را در حالت توسعه اجرا میکنم، همه چیز درست کار میکند، اما وقتی برنامه را با Electron Builder میسازم، بعضی ماژولها بهنوعی از بین میروند. در مورد من، ماژولهای adm-zip و sudo-prompt به نوعی در هنگام ساخت ناپدید میشوند. بنابراین وقتی برنامه شروع میشود، خطایی روی این خطوط دریافت میکنم: const AdmZip=window.require('adm-zip'); من قبلاً سعی کردم ماژولها را با ماژولهای دیگر جایگزین کنم، اما به نظر نمیرسد تفاوتی داشته باشد. حدس میزنم مشکل از Webpack و TypeScript باشد، اما چون من زیاد با Webpack/Electron آشنا نیستم، قطعاً چیزی را اینجا از دست میدهم. سایر ماژولها کار میکنند، مثل تمام ماژولهای Node یا ماژول electron-store که من هم استفاده میکنم.
آیا این مشکل رایج است و آیا من باید ماژولها را به شکلی متفاوت وارد کنم؟ Import یا require معمولی کار نمیکنند، من همیشه باید از window.require استفاده کنم
این مخزن خواهد بود: https://github.com/w3champions/w3champions-launcher در شاخه AddLauncherStuff
پاسخ شماره ۱
باشه، بالاخره مشکل را پیدا کردم: adm-zip وابستگیهای بومی دارد و بنابراین شما باید آن را به عنوان یک وابستگی خارجی در vue.config.js اضافه کنید. این باید برای سایر ماژولها هم کار کند، اگر آنها ماژولهای وابسته داشته باشند. من vue.config.js زیر را با adm-zip در پوشهٔ اصلی پروژهام اضافه کردم و حالا در نسخهٔ ساخته شده بکار گرفته میشود. شما لازم نیست vue.config.js را به هیچ مرحلهٔ ساخت یا چیز دیگری اضافه کنید، فقط افزودن آن در بالای پروژهتان برای اینکه webpack آن را شناسایی کند کافی است.
module.exports = {
pluginOptions: {
electronBuilder: {
externals: ['adm-zip']
}
}
}
پاسخ شماره ۲
من دستور "npm run build" را با دسترسی ادمین در سیستم عامل ویندوز اجرا کردم. همه چیز در ویندوز من خوب کار کرد.
امیدوارم این مقاله به شما کمک کند.
https://www.christianengvall.se/electron-packager-tutorial/
