Electron项目中将CommonJS改成使用ES 模块(ESM)语法preload.js加载报错

问题

将Electron项目原CommonJS语法改成使用ES 模块(ESM)语法,preload.js一直加载不到,报错如下:

VM111 renderer_init:2 Unable to load preload script: D:\Vue\wnpm\electron\preload.js
VM111 renderer_init:2 Error: require() of ES Module D:\Vue\wnpm\electron\preload.js not supported.
Instead change the require of preload.js in null to a dynamic import() which is available in all CommonJS modules.
    at Module._extensions..js (VM53 loader:1424:19)
    at Module.load (VM53 loader:1214:32)
    at Module._load (VM53 loader:1030:12)
    at c._load (VM68 node_init:2:13672)
    at s._load (VM111 renderer_init:2:31018)
    at VM111 renderer_init:2:33087
    at VM111 renderer_init:2:33539
    at ___electron_webpack_init__ (VM111 renderer_init:2:33543)
    at VM111 renderer_init:2:33666
    at BuiltinModule.compileForInternalLoader (VM7 realm:401:7)

在这里插入图片描述

解决办法

官方文档找到解决方法
https://www.electronjs.org/zh/docs/latest/tutorial/esm#esm-preload-scripts-must-have-the-mjs-extension

preload.js文件名改成preload.mjs,并且将preload: path.join(__dirname, 'preload.mjs')引用的后缀也要修改,下面是我的代码

// 创建浏览器窗口
mainWindow = new BrowserWindow({
    width: 1920,
    height: 1080,
    minWidth: 1024,
    minHeight: 768,
    titleBarStyle: 'customButtonsOnHover',
    icon: path.join(__dirname, 'assets', 'logo.ico'), // 设置窗口图标
    frame: false,//设置为 false 时可以创建一个无边框窗口 默认值为 true。        
    center: true,//窗口是否在屏幕居中. 默认值为 false
    show: true, //窗口是否在创建时显示。 默认值为 true。
    webPreferences: {
        nodeIntegration: true, //开启true这一步很重要,目的是为了vue文件中可以引入node和electron相关的API           
        enableRemoteModule: true, // 可以使用remote方法            
        contextIsolation: true, // 可以使用require方法
        preload: path.join(__dirname, 'preload.mjs')
    }
});

引用其它链接

  • 升级至electron@^28.0.0
  • 简单地在package.json中添加"type": "module",
  • 把所有.js 文件中的require, module.exports 改成 import from , export 语法。(除了preload.js)
  • 注意,esmimport语法中,文件后缀名.js不再能省略,必须显式提供。
  • 注意,esm中普通成员要用export { myFunc } 的方式提供。

如果你也要转ESM可以参数链接

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/602884.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

今日刷三题(day11):不同路径的数目(一)+短距离最小路径和+把数字翻译成字符串

题目一:不同路径的数目(一) 题目描述: 一个机器人在mn大小的地图的左上角(起点)。机器人每次可以向下或向右移动。机器人要到达地图的右下角(终点)。可以有多少种不同的路径从起点…

全栈开发之路——前端篇(6)生命周期和自定义hooks

全栈开发一条龙——前端篇 第一篇:框架确定、ide设置与项目创建 第二篇:介绍项目文件意义、组件结构与导入以及setup的引入。 第三篇:setup语法,设置响应式数据。 第四篇:数据绑定、计算属性和watch监视 第五篇 : 组件…

C#语言基础

一、复杂数据类型 1. 枚举 1.1 基本概念 1.1.1 枚举是什么 枚举是一个被命名的整型常量的集合,一般用它来表示状态、类型等等 1.1.2 申明枚举和申明枚举变量 申明枚举和申明枚举变量是两个概念 申明枚举:相当于是创建一个自定义的枚举类型 申明枚…

十大标准:评价B端系统界面美感度,你看了你也会。

美感和易用是评价B端系统用户体验的最高原则,本期从先从美感角度来分析B端界面 评价B端系统界面美感度的十大标准可以根据设计原则和用户体验来进行评估,以下是一些常见的标准: 一致性 界面元素的风格、布局和交互应该保持一致,…

Flutter连接websocket、实现在线聊天功能

老规矩效果图: 第一步:引入 web_socket_channel: ^2.4.0 第二步:封装 websocket.dart 单例 import dart:async; import dart:convert; import package:web_socket_channel/web_socket_channel.dart; import package:web_socket_channel/io.dart;class WebSocketManager {…

森林消防—高扬程水泵:守护绿色屏障的专业利器/恒峰智慧科技

在广袤的森林中,火灾无疑是最具破坏性的灾难之一。为了及时应对森林火灾,保护珍贵的自然资源和生态平衡,高效的消防设备显得尤为重要。森林消防高扬程水泵便是其中一款专业设备,以其高效输送水源的能力,成为守护森林绿…

Denoising diffusion models for out-of-distribution detection

Denoising diffusion models for out-of-distribution detection 摘要1 介绍2 相关工作2.1 基于生成得方法2.2 基于重构的方法3 方法3.1.扩散模型3.2.多次重建3.3.相似性评估4实验4.1. Experimental details4.2. Results for computer vision datasets4.3医学数据集上的结果4.4…

python 12实验

1.导入数据。 2.清洗数据,将缺失值或“NAN”替换为“无”,并将文本数据转换为数值型数据。 3.使用聚类算法(如KMeans)对数据进行聚类,并计算样本到簇中心的平均距离以确定最佳的簇数量。 4.对数据进行PCA降维&#xff…

Django Admin后台管理:高效开发与实践

title: Django Admin后台管理:高效开发与实践 date: 2024/5/8 14:24:15 updated: 2024/5/8 14:24:15 categories: 后端开发 tags: DjangoAdmin模型管理用户认证数据优化自定义扩展实战案例性能安全 第1章:Django Admin基础 1.1 Django Admin简介 Dj…

AI预测福彩3D第10套算法实战化赚米验证第1弹2024年5月5日第1次测试

从今天开始,准备启用第10套算法,来验证下本算法的可行性。因为本算法通过近三十期的内测(内测版没有公开预测结果),发现本算法的预测结果优于其他所有算法的效果。彩票预测只有实战才能检验是否有效,只有真…

旅游出行大热!景区电话却打不通了?

根据文化和旅游部5月6日发布的数据显示,今年“五一”假期,全国国内旅游出游合计2.95亿人次。 这个数据可以看出出游的热度是非常高的,但有网友表示在旅游的时候遇到糟心的事情,比如无法联系到景区,网友吐槽自己打电话20次仅仅接通了一次&…

前端奇怪面试题总结

面试题总结 不修改下面的代码进行正常解构 这道题考的是迭代器和生成器的概念 let [a,b] {a:1,b:2}答案 对象缺少迭代器,需要手动加上 Object.prototype[Symbol.iterator] function* (){// return Object.values(this)[Symbol.iterator]()return yeild* Object.v…

场外期权个股怎么对冲?

今天期权懂带你了解场外期权个股怎么对冲?场外个股期权是一种在非交易所市场进行的期权交易,它允许投资者针对特定的股票获得未来买入或卖出的权利。 场外期权个股怎么对冲? 持有相反方向的期权:这是最直接的对冲方法&#xff0c…

一分钟教你学浪app视频怎么缓存

你是否在学浪app上苦苦寻找如何缓存视频的方法?你是否想快速、轻松地观看自己喜欢的视频内容?那么,让我们一起探索一分钟教你如何缓存学浪app视频的技巧吧! 学浪下载工具我已经打包好了,有需要的自己下载一下 学浪下…

【数据分享】2006—2022年我国城市级别的市政设施水平相关指标(免费获取)

市政公用设施水平,作为衡量一座城市基础设施建设情况的核心指标之一,其完善程度、运行效率以及服务质量,不仅直接关乎城市的日常运转与居民生活质量,更是评估城市综合竞争力、宜居性以及可持续发展能力的关键要素。 我们发现在《…

unity-C#调用百度千帆AppBuilder的OpenApi

目录 功能描述准备工作百度智能云账号创建应用编辑应用创建Api秘钥Api调用流程unity代码Unitywebrequest非流式流式注意事项 Restsharp 功能描述 使用百度千帆AppBuilder平台,通过api调用的方式实现AI大模型对话功能(文字) 准备工作 百度智能云账号 请自行在百度智能云进行…

001_Langchain

LangChain LangChain 是一个开源框架,旨在帮助开发者使用大型语言模型(LLMs)和聊天模型构建端到端的应用程序。它提供了一套工具、组件和接口,以简化创建由这些模型支持的应用程序的过程。LangChain 的核心概念包括组件(Components)、链(Chains)、模型输入/输出(Mode…

Failed to build flash-attn:ERROR: Could not build wheels for flash-attn

安装 FlashAttention 的时候遇到报错: Failed to build flash-attn ERROR: Could not build wheels for flash-attn, which is required to install pyproject.toml-based projects可能是安装的版本与环境存在冲突吧,我的环境是: python 3.1…

GRU模块:nn.GRU层的介绍

如果需要深入理解GRU的话,那么内部实现的详细代码和计算公式就比较重要,中间的一些过程和变量的意义需要详细关注,只有这样,才能准备把握这个模块的内涵和意义,设计初衷和使用方式等等,所以,仔细…

值得推荐的多款iPaaS工具

当今企业面临着日益复杂的数据和系统集成挑战,为了提高业务效率和灵活性,许多企业转向了iPaaS工具(Integration Platform as a Service,即集成平台即服务)。iPaaS工具可以帮助企业轻松地连接和集成各种应用程序、数据和…
最新文章