处于安全性考虑,新版electron在创建窗口的时候。webPreferences有一个contextIsolation参数。默认是开启的。需要关闭,才能在子模块中使用nodejs模块。自答一下
nodemon --watch main.js --exec electron .
这样配置试试,
nodemon版本2.0.12
node 版本 14.X.X
老铁牛*666
新版本默认contextIsolation: true导致的,下面增加一条contextIsolation: false
所以示例代码 应该是:
const mainWindow = new BrowserWindow({ width: 800, height: 600, webPreferences: { nodeIntegration: true, contextIsolation: false } })
建议改版本,electron版本5之后程序里部分代码有改动
1、实际上渲染进程收到了消息,渲染进程的console.info再web控制台打印,
2、主进程传的files不对,路径传输应该用files.filepaths
Electron开发本地音乐播放器【3人成团,快来加入】,这找不到人拼团啊,难受!https://m.imooc.com/groupdetail/1198/nx5yVlPm77rX4g0R/ZakxNyDXbk6Ggb72?utm_source=share
加这个试试
可以看这个解答:https://www.imooc.com/qadetail/350033
https://www.imooc.com/qadetail/343082
看这个
已解决。应该是electron-builder新版本修改了script的用法
把package.json里的"script"
"dist": "build" 换成 “dist": "electron-builder"
来源:https://github.com/electron-userland/electron-builder/issues/4076
注册这个font awesome网站后就可以获得这个链接了,
也可以不注册,本地安装字体包:
npm install --save @fortawesome/fontawesome-free
然后在index.html引入node_modules里的css文件
<link rel="stylesheet" href="../node_modules/@fortawesome/fontawesome-free/css/all.min.css"/>
参考:https://fontawesome.com/how-to-use/on-the-web/setup/using-package-managers
已找到原因,renderer窗口打印的信息在其console里面才能看到,开发环境下的IDE命令行是看不到的。win10系统打开控制台的快捷键是“ctrl+shift+i”
1. 请确定你正确导入了fs:const fs = require("fs")
2. 如果导入了,command+单击,看源码的实现
我这里测试是正常的
代码
```
const appDataPath = app.getPath("userData")
const exist = fs.existsSync(appDataPath)
console.log("----------")
console.log(exist)
```
输出
```
[nodemon] starting `electron .`
----------
true
```
已经解决了,麻烦老师了!
后来打开了,原来是加载太慢了
原地址音乐删除,播放的时候查找文件失败,直接就报错了。
解决方案:
1. 将文件存储到数据库,然后用url的方式去访问
2. 将文件复制到appData里面,store存储的时候存储复制后的文件路径
下面是复制文件的部分操作:
1. 文件操作需要用到node.js的fs,使用 const fs = require("fs") 导入
2. 获取当前应用程序所在目录 const appDataPath = app.getPath("userData")
3. 创建音乐文件夹
const musicDir = appDataPath + "/musics"
fs.access(musicDir, (error) => {
if (error) {
fs.mkdir(musicDir, () => {})
}
})
4. 读取文件与写入文件
filePathes.forEach(filePath => {
const content = fs.readFileSync(filePath)
const saveFilePath = path.join(musicDir, path.basename(filePath))
fs.writeFile(saveFilePath ,content, () => {})
})
5. 更新store里面存储的path~
望采纳~