app.asar的位置
会在打包目录下生成一个叫win-unpacked
的文件夹,其中在win-unpacked
目录下有软件的exe执行文件和其他文件夹,其中有resources
的文件夹。
app.asar
的位置就在resources
下面。
解压app.asar
解压app.asar
需要asar
工具,使用npm
全局安装
npm install asar -g
在resources
文件下打开控制台,输入extract
可简写为e
asar extract app.asar ./app
解压后会发现,在目录下会生成一个app的目录文件夹,打开后会发现app.asar
解压后是一堆打包了的js和css和一些静态资源文件。
_static和 _dirname
__dirname
和__static
在dev环境中,代表以下路径:
dev | produce | |
---|---|---|
__dirname |
指向main.js文件所在的目录 | 指向<app.asar> |
__static |
指向publish(静态资源目录) | 指向<app.asar> |
若要使用app.asar
里的静态资源,可使用${__dirname}/静态资源
写法。
在background.js
里使用静态资源配置,如下:
let url=process.env.NODE_ENV !== "production"?"./public/versions.json":`${__dirname}/versions.json`
let readurl=fs.readFileSync(url, "utf8").toString()
注:要添加
toString()
后,再使用JSON.parse()
把字符串转换为obj。本地运行,不需要toString()
,但打包后不使用的话,就报错不是一个json格式,具体原因不太清楚。大概率是因为字符串里有换行符吧,反正本地可以,打包不行就很莫名其妙,不做细研究。
在vue
内使用静态资源,保持原生写法即可,如下:
axios.get('versions.json')
.then((res) => {
if(res.status==200){
console.log(res);
}
},(err) => {
console.log(err)
})