Anonymous
Проблема с электронной кузницей
Сообщение
Anonymous » 17 окт 2025, 08:03
Я создаю электронное приложение с помощью Preact + Typescript с помощью инструмента Vite.
Ниже приведена моя конфигурация Vite
Код: Выделить всё
import { resolve } from 'path'
import obfuscatorPlugin from "vite-plugin-javascript-obfuscator";
import preact from '@preact/preset-vite'
import packageJson from './package.json'
import dotenv from 'dotenv'
dotenv.config();
// https://vitejs.dev/config/
export default defineConfig(() => {
const isProd = process.env.VITE_APP_ENV === 'production'
console.log("Environment loaded:", process.env.VITE_APP_ENV)
return {
base: './',
plugins: [
preact(),
isProd && obfuscatorPlugin({
options: {
compact: true,
deadCodeInjection: true,
deadCodeInjectionThreshold: 0.5,
debugProtection: true,
debugProtectionInterval: 5000,
disableConsoleOutput: true,
}
})
].filter(Boolean),
resolve: {
dedupe: ['preact'],
alias: {
'@': resolve(__dirname, './src'),
'react': 'preact/compat',
'react-dom': 'preact/compat',
'react-dom/test-utils': 'preact/test-utils',
'react/jsx-runtime': 'preact/jsx-runtime',
},
},
build:{sourcemap:!isProd},
define: {
__APP_VERSION__: JSON.stringify(packageJson.version),
}
}
})
ниже приведена моя конфигурация forge
Код: Выделить всё
import { VitePlugin } from '@electron-forge/plugin-vite';
import type { ForgeConfig } from '@electron-forge/shared-types';
import { MakerSquirrel } from '@electron-forge/maker-squirrel';
import { MakerDMG } from '@electron-forge/maker-dmg';
import { FusesPlugin } from '@electron-forge/plugin-fuses';
import { FuseV1Options, FuseVersion } from '@electron/fuses';
import dotenv from 'dotenv'
dotenv.config();
const config: ForgeConfig = {
packagerConfig: {
asar: true,
appCopyright: "Copyright © 2025 MyApp",
appCategoryType: "public.app-category.finance",
name: "MyApp",
icon: './src/assets/icon.ico',
appVersion: '${version}',
overwrite: true,
osxUniversal: {
x64ArchFiles: '**/*',
},
osxSign: {
optionsForFile: () => {
return { entitlements: "./entitlements.mac.plist" }
}
},
osxNotarize: {
appleId: process.env.APPLE_ID || '',
appleIdPassword: process.env.APPLE_APP_PASSWORD || '',
teamId: process.env.APPLE_TEAM_ID || ''
}
},
rebuildConfig: {},
makers: [
new MakerSquirrel({
authors: '${author}',
setupMsi: 'MyApp-${version}',
}),
new MakerDMG({
format: 'ULFO',
name: '${name}-${version}',
icon: './src/assets/icon.ico',
overwrite: true,
contents: [
{
x: 410,
y: 220,
type: 'link' as const,
path: '/Applications',
},
],
iconSize: 128,
}),
],
plugins: [
new VitePlugin({
build: [
{
entry: 'electron/main.ts',
config: 'vite.config.ts',
},
{
entry: 'electron/preload.ts',
config: 'vite.config.ts',
},
],
renderer: [
{
name: 'app',
config: 'vite.config.ts',
},
],
}),
new FusesPlugin({
version: FuseVersion.V1,
[FuseV1Options.RunAsNode]: false,
[FuseV1Options.EnableCookieEncryption]: true,
[FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false,
[FuseV1Options.EnableNodeCliInspectArguments]: false,
[FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true,
[FuseV1Options.OnlyLoadAppFromAsar]: true,
}),
],
outDir: "release",
};
export default config;
Я столкнулся с двумя проблемами.
1.Когда я служу с помощью запуска электронной кузницы. Сервер запускается, но
в моем файле main.ts.
MAIN_WINDOW_VITE_DEV_SERVER_URL
не определен. поэтому возникает ошибка ReferenceError: MAIN_WINDOW_VITE_DEV_SERVER_URL не определен.
При создании сборки для Macos универсальный файл DMG. файл создается (вместе с другими папками) в выходном каталоге выпуска, но его размер составляет всего 58 КБ.. что-то не так с конфигурацией?
Подробнее здесь:
https://stackoverflow.com/questions/797 ... tron-forge
1760677387
Anonymous
Я создаю электронное приложение с помощью Preact + Typescript с помощью инструмента Vite. Ниже приведена моя конфигурация Vite [code]import { resolve } from 'path' import obfuscatorPlugin from "vite-plugin-javascript-obfuscator"; import preact from '@preact/preset-vite' import packageJson from './package.json' import dotenv from 'dotenv' dotenv.config(); // https://vitejs.dev/config/ export default defineConfig(() => { const isProd = process.env.VITE_APP_ENV === 'production' console.log("Environment loaded:", process.env.VITE_APP_ENV) return { base: './', plugins: [ preact(), isProd && obfuscatorPlugin({ options: { compact: true, deadCodeInjection: true, deadCodeInjectionThreshold: 0.5, debugProtection: true, debugProtectionInterval: 5000, disableConsoleOutput: true, } }) ].filter(Boolean), resolve: { dedupe: ['preact'], alias: { '@': resolve(__dirname, './src'), 'react': 'preact/compat', 'react-dom': 'preact/compat', 'react-dom/test-utils': 'preact/test-utils', 'react/jsx-runtime': 'preact/jsx-runtime', }, }, build:{sourcemap:!isProd}, define: { __APP_VERSION__: JSON.stringify(packageJson.version), } } }) [/code] ниже приведена моя конфигурация forge [code]import { VitePlugin } from '@electron-forge/plugin-vite'; import type { ForgeConfig } from '@electron-forge/shared-types'; import { MakerSquirrel } from '@electron-forge/maker-squirrel'; import { MakerDMG } from '@electron-forge/maker-dmg'; import { FusesPlugin } from '@electron-forge/plugin-fuses'; import { FuseV1Options, FuseVersion } from '@electron/fuses'; import dotenv from 'dotenv' dotenv.config(); const config: ForgeConfig = { packagerConfig: { asar: true, appCopyright: "Copyright © 2025 MyApp", appCategoryType: "public.app-category.finance", name: "MyApp", icon: './src/assets/icon.ico', appVersion: '${version}', overwrite: true, osxUniversal: { x64ArchFiles: '**/*', }, osxSign: { optionsForFile: () => { return { entitlements: "./entitlements.mac.plist" } } }, osxNotarize: { appleId: process.env.APPLE_ID || '', appleIdPassword: process.env.APPLE_APP_PASSWORD || '', teamId: process.env.APPLE_TEAM_ID || '' } }, rebuildConfig: {}, makers: [ new MakerSquirrel({ authors: '${author}', setupMsi: 'MyApp-${version}', }), new MakerDMG({ format: 'ULFO', name: '${name}-${version}', icon: './src/assets/icon.ico', overwrite: true, contents: [ { x: 410, y: 220, type: 'link' as const, path: '/Applications', }, ], iconSize: 128, }), ], plugins: [ new VitePlugin({ build: [ { entry: 'electron/main.ts', config: 'vite.config.ts', }, { entry: 'electron/preload.ts', config: 'vite.config.ts', }, ], renderer: [ { name: 'app', config: 'vite.config.ts', }, ], }), new FusesPlugin({ version: FuseVersion.V1, [FuseV1Options.RunAsNode]: false, [FuseV1Options.EnableCookieEncryption]: true, [FuseV1Options.EnableNodeOptionsEnvironmentVariable]: false, [FuseV1Options.EnableNodeCliInspectArguments]: false, [FuseV1Options.EnableEmbeddedAsarIntegrityValidation]: true, [FuseV1Options.OnlyLoadAppFromAsar]: true, }), ], outDir: "release", }; export default config; [/code] Я столкнулся с двумя проблемами. 1.Когда я служу с помощью запуска электронной кузницы. Сервер запускается, но в моем файле main.ts. MAIN_WINDOW_VITE_DEV_SERVER_URL не определен. поэтому возникает ошибка ReferenceError: MAIN_WINDOW_VITE_DEV_SERVER_URL не определен. [list] [*]При создании сборки для Macos универсальный файл DMG. файл создается (вместе с другими папками) в выходном каталоге выпуска, но его размер составляет всего 58 КБ.. что-то не так с конфигурацией? [/list] Подробнее здесь: [url]https://stackoverflow.com/questions/79792751/issue-with-electron-forge[/url]