账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    electron app打包后启动报错: Cannot find module 'reflect-metadata'
    27
    0
    Electron APP打包后启动报错:找不到模块'reflect-metadata'。在package.json中,reflect-metadata存在!我不知道这是不是个bug。我需要帮助,谢谢!首先,运行electron-serve是正常的,但是运行electron-builder打包成功后,启动就会报错:A JavaScript error occurred in the main processUncaught Exception:Error: Cannot find module 'reflect-metadata'Require stack:- /Applications/aDemo.app/Contents/Resources/app.asar/node_modules/@nestjs/core/index.js- /Applications/aDemo.app/Contents/Resources/app.asar/background.js- at Module._resolveFilename (internal/modules/cjs/loader.js:887:15)at Function.n._resolveFilename (electron/js2c/browser_init.js:257:1128)at Module._load (internal/modules/cjs/loader.js:732:27)at Function.f._load (electron/js2c/asar_bundle.js:5:12913)at Module.require (internal/modules/cjs/loader.js:959:19)at require (internal/modules/cjs/helpers.js:88:18)at Object.<anonymous> (/Applications/aDemo.app/Contents/Resources/app.asar/node_modules/@nestjs/core/index.js:11:1)at Module._compile (internal/modules/cjs/loader.js:1078:30)at Object.Module._extensions..js (internal/modules/cjs/loader.js:1108:10)at Module.load (internal/modules/cjs/loader.js:935:32)以下是关于builder的一些配置:pluginOptions: { electronBuilder: { builderOptions: { "appId": "com.example.app", "productName":"aDemo", "copyright":"Copyright © 2019", // "directories":{ // "output":"./dist" // }, // files: ['dist_electron/**/*'], "dmg": { // "background": "res/background.png", "window": { "x": 100, "y": 100, } }, }, electronBuilder: { externals: ['reflect-metadata'], nodeModulesPath: ['./node_modules'] } } },
    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 留白是什么白 普通会员 1楼

      这个错误可能是因为你的Electron应用程序在打包时,没有正确地包含或引入了ReflectMetadata模块。这个模块用于在Node.js环境中创建和获取属性名的映射。

      如果你的Electron应用程序在启动时使用的是npm(Node.js包管理器)来打包和运行应用程序,那么你可能需要使用"rollup-plugin-node-resolve"插件来解决这个问题。这个插件可以让你在运行你的Electron应用程序之前,就已经从npm安装了所有必需的模块。

      以下是一个使用rollup-plugin-node-resolve的例子:

      ```javascript import { resolve } from 'rollup-plugin-node-resolve';

      export default { input: 'src/main.js', output: { file: 'dist/main.js' }, plugins: [ resolve() ] }; ```

      在这个例子中,"resolve"插件将从npm中安装所有的模块。如果npm没有安装某个模块,那么这个插件将自动忽略它。

      如果你的Electron应用程序使用的是yarn(Node.js包管理器),那么你可能需要使用"rollup-plugin-node-resolve"插件来解决这个问题。这个插件可以让你在运行你的Electron应用程序之前,就已经从yarn安装了所有必需的模块。

      以下是一个使用rollup-plugin-node-resolve的例子:

      ```javascript import { resolve } from 'rollup-plugin-node-resolve';

      export default { input: 'src/main.js', output: { file: 'dist/main.js' }, plugins: [ resolve() ] }; ```

      在这个例子中,"resolve"插件将从yarn中安装所有的模块。如果yarn没有安装某个模块,那么这个插件将自动忽略它。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部