当前位置: 首页 > 后端技术 > Node.js

报错:Electron应用打包启动后找不到模块'reflect-metadata'

时间:2023-04-03 10:08:53 Node.js

前言这是Electronapp开发过程中的一系列踩坑之旅。特此记录下来,分享给大家。每一篇文章都是一个坑和填坑的解决方案!问题:错误:找不到模块'reflect-metadata'主进程中发生JavaScript错误未捕获异常:错误:找不到模块'reflect-metadata'需要堆栈:-/Applications/aDemo.app/Contents/Resources/app.asar/node_modules/@nestjs/core/index.js-/Applications/aDemo.app/Contents/Resources/app.asar/background.js-在Module._resolveFilename(internal/modules/cjs/loader.js:887:15)在Function.n._resolveFilename(electron/js2c/browser_init.js:257:1128)在Module._load(internal/modules/cjs/loader.js:732:27)在Function.f._load(electron/js2c/asar_bundle.js:5:12913)在Module.require(internal/modules/cjs/loader.js:959:19)atrequire(internal/modules/cjs/helpers.js:88:18)at对象。<匿名>(/Applications/aDemo.app/Contents/Resources/app.asar/node_modules/@nestjs/core/index.js:11:1)在Module._compile(internal/modules/cjs/loader.js:1078:30)在Object.Module._extensions..js(internal/modules/cjs/loader.js:1108:10)atModule.load(internal/modules/cjs/loader.js:935:32)根据错误提示进行分析,表示为打包的app在.asar/node_modules中没有找到reflect-metadata模块,但是我在开发的node_modules目录下找到了这个,但是我在app.asar/node_modules中没有找到reflect-metadata,所以我怀疑是reflect-metadata没有包装。元数据被打包到app.asar/node_modules中,所以猜猜如果你需要打包这个依赖,它是否需要一些额外的配置?按照这个方向在网上找了一圈也没找到相关的配置说明,于是在Github上提交了一个issue,然后就只能啃官网的英文文档了!GIthubissue链接:https://github.com/nklayman/v...官方文档链接:https://nklayman.github.io/vu...解决方法在官方文档中找到了类似的说明,按照它的说明测试通过,官方文档对该片段的解释如下:支持原生模块,无需任何配置,假设启用了nodeIntegration。如果出现错误,您可能需要将本机依赖项设置为外部webpack(opensnewwindow)。它应该会自动找到,但也可能不会。为此,请使用外部选项://vue.config.jsmodule.exports={pluginOptions:{electronBuilder:{//如果它们不工作,请在此处列出本地依赖:['my-native-dep'],//如果你正在使用YarnWorkspaces,你可能有多个node_modules文件夹//在这里列出它们以便VCPElectronBuilder可以找到它们nodeModulesPath:['../../node_modules','./node_modules']}}}大意是告诉开发者,如果有些模块打包后不能用,需要在electronBuilder中配置!参考资料1.VueCLIPluginElectronBuilder:https://nklayman.github.io/vu...