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)
})