• 关于electron的开发应用路径和生产路径的问题


    最近我在开发一个小工具,打包后出现

    Uncaught Error: ENOENT, cnblog-tool.json not found in D:makalo-cnblog-tool esourcesapp.asar

    image-20210304191940563

    一看要写入的路径,我发现路径不对,应该就是这个问题

    原因分析

    开发环境的路径和生产环境的路径不一致

    解决办法

    既然知道了原因,那就好解决,既然环境不一样,那我首先得知道如何判断环境,找到官网

    app.isPackaged 只读

    返回一个Boolean值,如果应用已经打包,返回true ,否则返回false 。 对于大多数应用程序,此属性可用于区分开发和生产环境。

    现在知道了如何判断环境,那如何根据环境获取路径呢?

    我原来用的

    app.getAppPath()
    

    现在测试得出这个是开发环境的,那生产环境的路径怎么获取呢?仔细看api

    app.getPath(name)

    •   name
      

      字符串-您可以通过名称请求以下路径:

      • home 用户的 home 文件夹(主目录)

      •   appData
        

        每个用户的应用程序数据目录,默认情况下指向:

        • %APPDATA% Windows 中
        • $XDG_CONFIG_HOME或在~/.configLinux中
        • ~/Library/Application Support macOS 中
      • userData 储存你应用程序设置文件的文件夹,默认是 appData 文件夹附加应用的名称

      • 缓存

      • temp 临时文件夹

      • exe当前的可执行文件

      • module The libchromiumcontent

      • desktop 当前用户的桌面文件夹

      • documents 用户文档目录的路径

      • downloads 用户下载目录的路径

      • music 用户音乐目录的路径

      • pictures 用户图片目录的路径

      • videos 用户视频目录的路径

      • recent 用户最近文件的目录(仅Windows)。

      • logs应用程序的日志文件夹

      • crashDumps 故障转储的存储目录。

    返回String-与关联的特殊目录或文件的路径name。失败时,Error抛出。

    如果app.getPath('logs')在没有先调用app.setAppLogsPath()被调用的情况下被调用,则将创建一个默认日志目录,该目录等同于app.setAppLogsPath()不带path参数的调用。

    其中有个exe当前的可执行文件,应该就是这个

    所以路径的正确写法,应该是

    路径的正确写法

    该写法能获取到应用程序的根目录

    //当前应用的目录
    const appPath = app.isPackaged ? path.dirname(app.getPath('exe')) : app.getAppPath();
    
  • 相关阅读:
    无法连接到已配置的开发web服务器
    Java开发命名规范总结
    java包名命名规范[【转】
    github远程建了分支,本地看不到的问题
    git远程删除分支后,本地git branch -a 依然能看到的解决办法
    git主要操作命令
    Ant之build.xml配置详解【转】
    git合并指定文件到另一分支
    java最简单实现Log打印和生成日志文件
    SCF: 简单配置门面[转]
  • 原文地址:https://www.cnblogs.com/makalochen/p/14482580.html
Copyright © 2020-2023  润新知