逃跑的羊 2024-03-29 18:44 采纳率: 0%
浏览 49
已结题

electron linux 打包

electron
将前端代码放到wsl中通过electron-builder打包linux包后运行发现只要是中文都变成小方块了,哪里可以配置解决吗

img


以下是我的配置文件

img

img

  • 写回答

2条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-03-29 18:44
    关注

    引自免费微信小程序:皆我百晓生

    在 electron 项目中,当我们想要在Linux发行版(如Windows Subsystem for Linux,WSL)上进行打包并发布应用时,遇到中文字符显示为小方块的问题时,可能有以下几个原因导致这个问题:

    1. Chinese character encoding: Linux系统默认是UTF-8编码,这是一种字符集格式,它支持所有Unicode字符。但是,在一些特定的Windows/Linux发行版或操作系统上,其默认字符集可能是GB2312、GBK、MacRoman等编码方案。在这些编码方案下,中文字符可能会被映射为对应的小写字母或特殊字符,而不是完整的汉字。

    2. Electron project's configuration: 在 package.json 文件中,我们需要指定应用程序使用的字符集,并确保其兼容上述默认编码方案。例如,如果你使用的是 UTF-8 编码,并且想要使 Linux 发行版中的中文字符正常显示,可以在 .eslintrc.js.nixpkgs.mk 文件中设置如下配置:

    {
      "rootDir": "./src",
      "config": {
        "env": {
          "IrisCore": {
            "extensions": ["lang"],
            "language": "zh-CN"
          }
        },
        "compilerOptions": {
          "target": "esnext",
          "module": "commonjs",
          "outDir": "dist",
          "sourceMap": true,
          "noImplicitAny": true,
          "strict": true,
          "esModuleInterop": true,
          "jsx": "react",
          "resolveJsonModule": true,
          "baseUrl": ".",
          "paths": {
            "@/*": ["src/*"]
          }
        },
        "exclude": [
          "node_modules/**",
          "**/tests/**"
        ],
        "sourceMap": true,
        "resolveJsonModule": true,
        "externals": {
          "@": "process"
        }
      },
      "scripts": {
        "prebuild": "npm run build-deps",
        "build": "node scripts/build.js",
        "postinstall": "npm run install"
      }
    }
    

    在这个配置文件中,我们设置了以下参数:

    • "IrisCore" 是项目的 module.exports 对象,这里指定了在 node_modules 目录下的一个对象。
    • "extensions": ["lang"] 将选择 .eslintrc.js 文件扩展到 .lang 子目录中的 *.js 文件,这会启用 ESNext 版本的 TypeScript 支持。
    • "language": "zh-CN" 指定应用程序的语言为简体中文(京许),与 .eslintrc.js 中的 language 属性保持一致。
    • "compilerOptions" 包含 Node.js 的全局选项,包括 targetmoduleoutDirsourceMap 等。其中,我们选择了默认的 esnext 语言版本,也指定了输出路径和类型转换(ESM),以确保不产生 ESM 文件。
    • "exclude" 列表包含要排除的项目文件夹及其子文件夹,这是为了防止某些第三方库或插件占用整个源代码目录,而忽略 .eslintrc.js 文件本身。
    • "sourceMap": true 配置了生成源代码对应的 .map 文件,可以提供调试信息。
    • "resolveJsonModule": true 引入了从 JSON 字典解析模块(如 @import "json/index")提供的模块 json/index,用于加载 JavaScript 文件。
    • "baseUrl": "." 设置了根目录的相对路径。
    • "paths": { "@/*": ["src/*"] } 根据路径生成不同层次的变量名映射,这样在实际运行时,无需额外搜索文件夹名称,从而减少查找成本。

    当我们执行 npm run build-depsnpm run build 之后,就将生成构建所需的 .node_modules.dist 文件,然后使用 npm run install 进行静态库和可执行文件的安装,终端中会看到编译后的 Linux 包已成功打包。

    注意,虽然通过以上配置可以解决问题,但并不能完全避免所有情况下中文字符变为小方块的情况。对于可能影响项目稳定性和用户体验的部分特例,比如跨语言编译或引入跨平台的第三方库时,可能需要结合其他策略进行处理,如使用 Unicode 字符集中进行映射、替换或转义等。此外,为了适应不同的编码环境,开发者还需要定期更新 .eslintrc.js 和其它相关配置文件,以确保与最新发布的 Electron 代码兼容。

    评论 编辑记录

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月1日
  • 修改了问题 3月29日
  • 创建了问题 3月29日