关于electron-vue里的app.asar


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

文章作者: 弈心
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 弈心 !
评论
  目录