简体   繁体   English

使用电子伪造打包应用程序时出现问题“无法解析'./→'”

[英]Problem while packaging application with electron-forge “Can't resolve './→' ”

I am not able to package my Electron application with electron-forge .我无法使用electron-forge package 我的 Electron 应用程序。 It looks like that the culprits are the native modules such as 'sqlite3'.看起来罪魁祸首是本机模块,例如'sqlite3'。

When running the command npm run package , I get the following error: Module not found: Error: Can't resolve './→' in 'C:\Users\pauco\mybeast\node_modules\node-pre-gyp\lib'运行命令npm run package时,我收到以下错误: Module not found: Error: Can't resolve './→' in 'C:\Users\pauco\mybeast\node_modules\node-pre-gyp\lib'

I tried:我试过了:

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

Full trace:完整跟踪:

× 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

package.json package.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 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 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(),
    ],
}

you can use plugin to unpack native modules to be resolved您可以使用插件解压缩要解析的本机模块

You can follow here:https://www.electronforge.io/config/plugins/auto-unpack-natives你可以在这里关注: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.此插件会自动将 node_modules 文件夹中的所有本机模块添加到 packagerConfig 中的 asar.unpack 配置选项。 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 config The complete config options are available at AutoUnpackNativesConfig .您必须将此插件添加到您的 forge 配置中的插件数组中。完整的配置选项可在AutoUnpackNativesConfig 获得

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 电子锻造制造不会建造 - electron-forge make won't build 电子锻造:如何指定钩子? - electron-forge: how to specify hooks? 使用VSCode调试电子锻造应用程序 - Debug electron-forge app with VSCode ElectronJS npm 启动/bash:电子伪造:找不到命令 - ElectronJS npm start / bash: electron-forge: command not found Electron-forge - Forge 内部发生未处理的拒绝:[object Object] - Electron-forge - An unhandled rejection has occurred inside Forge: [object Object] 在电子锻造项目中安装“node-pty”后,缺少名为 pty.node.js 的文件。 如何在 Linux 中安装 node-pty - A file called pty.node.js is missing after installing "node-pty" in a electron-forge project. How can I install node-pty in Linux 与电子应用程序一起包装NodeJS - Packaging NodeJS along with electron application Electron-forge npm run make“错误:找不到您的应用程序的主要入口点。” - Electron-forge npm run make "Error: The main entry point to your app was not found." “未捕获的 ReferenceError:require is not defined” 在 index.html 的电子锻造应用程序与反应模板 - “Uncaught ReferenceError: require is not defined” in index.html of electron-forge app with react template @electron-forge/plugin-webpack 中的 configuration.module.rules[2] 问题 - configuration.module.rules[2] Issue in @electron-forge/plugin-webpack
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM