gpt4 book ai didi

javascript - 使用 Electron 伪造打包应用程序时出现问题 "Can' t 解决 './→' “

转载 作者:行者123 更新时间:2023-12-03 13:24:20 24 4
gpt4 key购买 nike

我无法使用 electron-forge 打包我的 Electron 应用程序.
看起来罪魁祸首是 native 模块,例如'sqlite3'。
运行命令时npm run package ,我收到以下错误:Module not found: Error: Can't resolve './→' in 'C:\Users\pauco\mybeast\node_modules\node-pre-gyp\lib'我试过:

  • npm rebuild
  • node_modules\.bin\electron-rebuild

  • 完整跟踪:
    × Compiling Main Process Code

    An unhandled error has occurred inside Forge:
    Compilation errors in the main process: Hash: dac46d131e24e591c251
    Version: webpack 4.44.0
    Time: 2526ms
    Built at: 2020-07-27 18:35:10
    Asset Size Chunks Chunk Names
    index.js 350 KiB 0 main
    index.js.map 1.28 MiB 0 [dev] main
    native_modules//lib/binding/napi-v3-win32-x64/node_sqlite3.node 1.36 MiB
    native_modules/lib\binding\napi-v3-win32-x64\node_sqlite3.node 1.36 MiB
    Entrypoint main = index.js index.js.map
    [3] external "path" 42 bytes {0} [built]
    [4] external "fs" 42 bytes {0} [built]
    [8] external "electron" 42 bytes {0} [built]
    [26] ./src/backend/backend.ts 6.12 KiB {0} [built]
    [27] external "child_process" 42 bytes {0} [built]
    [45] ./src/backend/GameManager/services/GameManagerService.ts 7.59 KiB {0} [built]
    [46] ./node_modules/axios/index.js 40 bytes {0} [built]
    [56] ./node_modules/debug/src/index.js 263 bytes {0} [built]
    [87] ./src/backend/GameManager/GameManager.ts 864 bytes {0} [built]
    [88] ./src/backend/GameManager/services/GameDiscovererService.ts 7.68 KiB {0} [built]
    [125] ./src/backend/Storage.ts 5.4 KiB {0} [built]
    [126] ./node_modules/sqlite3/lib/sqlite3.js 6.16 KiB {0} [built]
    [200] ./src/backend/utils.ts 737 bytes {0} [built]
    [201] ./node_modules/electron-squirrel-startup/index.js 1 KiB {0} [built]
    [202] ./node_modules/rxjs/_esm5/index.js + 101 modules 156 KiB {0} [built]
    | ./node_modules/rxjs/_esm5/index.js 3.33 KiB [built]
    | ./node_modules/rxjs/_esm5/internal/config.js 859 bytes [built]
    | ./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js 707 bytes [built]
    | ./node_modules/rxjs/_esm5/internal/Subscription.js 4.92 KiB [built]
    | ./node_modules/rxjs/_esm5/internal/Subscriber.js 8.44 KiB [built]
    | ./node_modules/rxjs/_esm5/internal/symbol/observable.js 218 bytes [built]
    | ./node_modules/rxjs/_esm5/internal/util/identity.js 127 bytes [built]
    | ./node_modules/rxjs/_esm5/internal/util/pipe.js 565 bytes [built]
    | ./node_modules/rxjs/_esm5/internal/Observable.js 3.95 KiB [built]
    | ./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js 552 bytes [built]
    | ./node_modules/rxjs/_esm5/internal/Subject.js 5.25 KiB [built]
    | ./node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js 5.38 KiB [built]
    | ./node_modules/rxjs/_esm5/internal/operators/groupBy.js 6.59 KiB [built]
    | ./node_modules/rxjs/_esm5/internal/BehaviorSubject.js 1.46 KiB [built]
    | ./node_modules/rxjs/_esm5/internal/Scheduler.js 602 bytes [built]
    | + 87 hidden modules
    + 188 hidden modules

    WARNING in ./node_modules/better-queue/lib/queue.js
    Module not found: Error: Can't resolve 'better-queue-→' in 'C:\Users\pauco\mybeast\node_modules\better-queue\lib'
    @ ./node_modules/better-queue/lib/queue.js
    @ ./node_modules/apicalypse/dist/index.js
    @ ./src/backend/GameManager/services/GameDiscovererService.ts
    @ ./src/backend/GameManager/GameManager.ts
    @ ./src/backend/backend.ts

    ERROR in ./node_modules/node-pre-gyp/lib/node-pre-gyp.js
    Module not found: Error: Can't resolve './→' in 'C:\Users\pauco\mybeast\node_modules\node-pre-gyp\lib'
    @ ./node_modules/node-pre-gyp/lib/node-pre-gyp.js 52:13-32 184:38-57
    @ ./node_modules/sqlite3/lib/sqlite3-binding.js
    @ ./node_modules/sqlite3/lib/sqlite3.js
    @ ./src/backend/Storage.ts
    @ ./src/backend/backend.ts
    Error: Compilation errors in the main process: Hash: dac46d131e24e591c251
    Version: webpack 4.44.0
    Time: 2526ms
    Built at: 2020-07-27 18:35:10
    Asset Size Chunks Chunk Names
    index.js 350 KiB 0 main
    index.js.map 1.28 MiB 0 [dev] main
    native_modules//lib/binding/napi-v3-win32-x64/node_sqlite3.node 1.36 MiB
    native_modules/lib\binding\napi-v3-win32-x64\node_sqlite3.node 1.36 MiB
    Entrypoint main = index.js index.js.map
    [3] external "path" 42 bytes {0} [built]
    [4] external "fs" 42 bytes {0} [built]
    [8] external "electron" 42 bytes {0} [built]
    [26] ./src/backend/backend.ts 6.12 KiB {0} [built]
    [27] external "child_process" 42 bytes {0} [built]
    [45] ./src/backend/GameManager/services/GameManagerService.ts 7.59 KiB {0} [built]
    [46] ./node_modules/axios/index.js 40 bytes {0} [built]
    [56] ./node_modules/debug/src/index.js 263 bytes {0} [built]
    [87] ./src/backend/GameManager/GameManager.ts 864 bytes {0} [built]
    [88] ./src/backend/GameManager/services/GameDiscovererService.ts 7.68 KiB {0} [built]
    [125] ./src/backend/Storage.ts 5.4 KiB {0} [built]
    [126] ./node_modules/sqlite3/lib/sqlite3.js 6.16 KiB {0} [built]
    [200] ./src/backend/utils.ts 737 bytes {0} [built]
    [201] ./node_modules/electron-squirrel-startup/index.js 1 KiB {0} [built]
    [202] ./node_modules/rxjs/_esm5/index.js + 101 modules 156 KiB {0} [built]
    | ./node_modules/rxjs/_esm5/index.js 3.33 KiB [built]
    | ./node_modules/rxjs/_esm5/internal/config.js 859 bytes [built]
    | ./node_modules/rxjs/_esm5/internal/util/UnsubscriptionError.js 707 bytes [built]
    | ./node_modules/rxjs/_esm5/internal/Subscription.js 4.92 KiB [built]
    | ./node_modules/rxjs/_esm5/internal/Subscriber.js 8.44 KiB [built]
    | ./node_modules/rxjs/_esm5/internal/symbol/observable.js 218 bytes [built]
    | ./node_modules/rxjs/_esm5/internal/util/identity.js 127 bytes [built]
    | ./node_modules/rxjs/_esm5/internal/util/pipe.js 565 bytes [built]
    | ./node_modules/rxjs/_esm5/internal/Observable.js 3.95 KiB [built]
    | ./node_modules/rxjs/_esm5/internal/util/ObjectUnsubscribedError.js 552 bytes [built]
    | ./node_modules/rxjs/_esm5/internal/Subject.js 5.25 KiB [built]
    | ./node_modules/rxjs/_esm5/internal/observable/ConnectableObservable.js 5.38 KiB [built]
    | ./node_modules/rxjs/_esm5/internal/operators/groupBy.js 6.59 KiB [built]
    | ./node_modules/rxjs/_esm5/internal/BehaviorSubject.js 1.46 KiB [built]
    | ./node_modules/rxjs/_esm5/internal/Scheduler.js 602 bytes [built]
    | + 87 hidden modules
    + 188 hidden modules

    WARNING in ./node_modules/better-queue/lib/queue.js
    Module not found: Error: Can't resolve 'better-queue-→' in 'C:\Users\pauco\mybeast\node_modules\better-queue\lib'
    @ ./node_modules/better-queue/lib/queue.js
    @ ./node_modules/apicalypse/dist/index.js
    @ ./src/backend/GameManager/services/GameDiscovererService.ts
    @ ./src/backend/GameManager/GameManager.ts
    @ ./src/backend/backend.ts

    ERROR in ./node_modules/node-pre-gyp/lib/node-pre-gyp.js
    Module not found: Error: Can't resolve './→' in 'C:\Users\pauco\mybeast\node_modules\node-pre-gyp\lib'
    @ ./node_modules/node-pre-gyp/lib/node-pre-gyp.js 52:13-32 184:38-57
    @ ./node_modules/sqlite3/lib/sqlite3-binding.js
    @ ./node_modules/sqlite3/lib/sqlite3.js
    @ ./src/backend/Storage.ts
    @ ./src/backend/backend.ts
    at cb (C:\Users\pauco\mybeast\node_modules\@electron-forge\plugin-webpack\src\WebpackPlugin.ts:250:31)
    at finalCallback (C:\Users\pauco\mybeast\node_modules\webpack\lib\Compiler.js:257:39)
    at C:\Users\pauco\mybeast\node_modules\webpack\lib\Compiler.js:273:13
    at AsyncSeriesHook.eval [as callAsync] (eval at create (C:\Users\pauco\mybeast\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:4:1)
    at AsyncSeriesHook.lazyCompileHook (C:\Users\pauco\mybeast\node_modules\tapable\lib\Hook.js:154:20)
    at onCompiled (C:\Users\pauco\mybeast\node_modules\webpack\lib\Compiler.js:271:21)
    at C:\Users\pauco\mybeast\node_modules\webpack\lib\Compiler.js:681:15
    at AsyncSeriesHook.eval [as callAsync] (eval at create (C:\Users\pauco\mybeast\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:4:1)
    at AsyncSeriesHook.lazyCompileHook (C:\Users\pauco\mybeast\node_modules\tapable\lib\Hook.js:154:20)
    at C:\Users\pauco\mybeast\node_modules\webpack\lib\Compiler.js:678:31
    at AsyncSeriesHook.eval [as callAsync] (eval at create (C:\Users\pauco\mybeast\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:4:1)
    at AsyncSeriesHook.lazyCompileHook (C:\Users\pauco\mybeast\node_modules\tapable\lib\Hook.js:154:20)
    at C:\Users\pauco\mybeast\node_modules\webpack\lib\Compilation.js:1423:35
    at AsyncSeriesHook.eval [as callAsync] (eval at create (C:\Users\pauco\mybeast\node_modules\tapable\lib\HookCodeFactory.js:33:10), <anonymous>:4:1)
    at AsyncSeriesHook.lazyCompileHook (C:\Users\pauco\mybeast\node_modules\tapable\lib\Hook.js:154:20)
    at C:\Users\pauco\mybeast\node_modules\webpack\lib\Compilation.js:1414:32
    包.json
    {
    "name": "mybeast",
    "productName": "mybeast",
    "version": "1.0.0",
    "description": "",
    "main": ".webpack/main",
    "scripts": {
    "start": "electron-forge start",
    "package": "electron-forge package",
    "make": "electron-forge make",
    "publish": "electron-forge publish",
    "lint": "eslint --ext .ts ."
    },
    "author": "",
    "license": "ISC",
    "config": {
    "forge": {
    "packagerConfig": {},
    "makers": [
    {
    "name": "@electron-forge/maker-squirrel",
    "config": {
    "name": "mybeast"
    }
    }
    ],
    "plugins": [
    [
    "@electron-forge/plugin-webpack",
    {
    "mainConfig": "./webpack.backend.config.js",
    "renderer": {
    "config": "./webpack.renderer.config.js",
    "entryPoints": [
    {
    "html": "./src/frontend/index.html",
    "js": "./src/frontend/frontend.ts",
    "name": "frontend"
    },
    {
    "html": "./src/player/index.html",
    "js": "./src/player/Player.ts",
    "name": "player"
    }
    ]
    }
    }
    ]
    ]
    }
    },
    "devDependencies": {
    "@types/request": "^2.48.5",
    "@types/sqlite3": "^3.1.6",
    "@electron-forge/cli": "^6.0.0-beta.52",
    "@electron-forge/maker-deb": "^6.0.0-beta.52",
    "@electron-forge/maker-rpm": "^6.0.0-beta.52",
    "@electron-forge/maker-squirrel": "^6.0.0-beta.52",
    "@electron-forge/maker-zip": "^6.0.0-beta.52",
    "@electron-forge/plugin-webpack": "^6.0.0-beta.52",
    "@marshallofsound/webpack-asset-relocator-loader": "^0.5.0",
    "@typescript-eslint/eslint-plugin": "^2.34.0",
    "@typescript-eslint/parser": "^2.34.0",
    "css-loader": "^3.6.0",
    "electron": "9.1.1",
    "electron-rebuild": "^1.11.0",
    "eslint": "^6.8.0",
    "eslint-plugin-import": "^2.22.0",
    "fork-ts-checker-webpack-plugin": "^3.1.1",
    "html-loader": "^1.1.0",
    "node-loader": "^0.6.0",
    "style-loader": "^0.23.1",
    "ts-loader": "^6.2.2",
    "typescript": "^3.9.7",
    "sass": "^1.26.10",
    "sass-loader": "^9.0.2",
    "source-map-support": "^0.5.19"
    },
    "dependencies": {
    "electron-squirrel-startup": "^1.0.0",
    "apicalypse": "^0.1.6",
    "axios": "^0.19.2",
    "sqlite3": "^5.0.0",
    "ws": "^7.3.1"
    }
    }
    webpack.backend.config.js
    module.exports = {
    entry: './src/backend/backend.ts',
    resolve: {
    extensions: ['.js', '.ts', '.jsx', '.tsx', '.css', '.json', '.scss']
    },
    module: {
    rules: [
    {
    test: /\.node$/,
    use: 'node-loader',
    },
    {
    test: /\.(m?js|node)$/,
    parser: {amd: false},
    use: {
    loader: '@marshallofsound/webpack-asset-relocator-loader',
    options: {
    outputAssetBase: 'native_modules',
    },
    },
    },
    {
    test: /\.tsx?$/,
    exclude: /(node_modules|\.webpack)/,
    use: {
    loader: 'ts-loader',
    options: {
    transpileOnly: true
    }
    }
    },
    ]
    }
    }
    webpack.renderer.config.js
    const VueLoaderPlugin = require('vue-loader/lib/plugin')

    module.exports = {
    resolve: {
    alias: {
    'vue$': 'vue/dist/vue.esm.js'
    },
    mainFields: ['main', 'browser'],
    extensions: ['.js', '.ts', '.jsx', '.tsx', '.css', '.json']
    },
    module: {
    rules: [
    {
    test: /\.vue$/,
    loader: 'vue-loader'
    },
    {
    test: /\.s[ac]ss$/,
    use: [
    'style-loader',
    'css-loader',
    'sass-loader'
    ]
    },
    {
    test: /\.html$/,
    loader: 'html-loader',
    options: {
    minimize: true
    }
    },
    {
    test: /\.node$/,
    use: 'node-loader',
    },
    {
    test: /\.(m?js|node)$/,
    parser: {amd: false},
    use: {
    loader: '@marshallofsound/webpack-asset-relocator-loader',
    options: {
    outputAssetBase: 'native_modules',
    },
    },
    },
    {
    test: /\.tsx?$/,
    include: /src/,
    use: 'ts-loader',
    },
    ]
    },
    plugins: [
    new VueLoaderPlugin(),
    ],
    }

    最佳答案

    您可以使用插件解压缩要解析的 native 模块
    你可以在这里关注:
    https://www.electronforge.io/config/plugins/auto-unpack-natives

    This plugin will automatically add all native modules in your node_modules folder to the asar.unpack config option in your packagerConfig. If you have any native modules as all you should probably use this to reduce loading times and disk consumption on your users' machines.


    Usage:

    You must add this plugin to your plugins array in your forge configThe complete config options are available at AutoUnpackNativesConfig.

    关于javascript - 使用 Electron 伪造打包应用程序时出现问题 "Can' t 解决 './→' “,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63119757/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com