You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

pkg打包Node.js可执行文件未包含settings目录文件如何解决

pkg打包未包含settings目录文件的解决方法

你之前配置不生效的核心原因:pkg不会读取package.json根层级的assets字段,资源配置必须放在pkg配置节点下才能被识别。

正确配置步骤

  • 修正package.json配置结构
    把assets规则移动到package.json的pkg字段内,不需要重复写两条匹配规则,settings/**/*已经可以递归覆盖目录下所有层级的文件,正确配置示例:
    {
      "name": "your-app",
      "version": "1.0.0",
      // 保留原有其他package.json配置
      "pkg": {
        "assets": [
          "settings/**/*"
        ]
      }
    }
    
  • 修正代码里的文件读取路径
    打包后pkg会把资源挂载到虚拟文件系统,不要用硬编码绝对路径读文件,统一用__dirname拼接相对路径,示例:
    const path = require('path')
    // 入口文件在项目根目录时的路径写法
    const configFile = path.join(__dirname, 'settings/config.json')
    const csvRoot = path.join(__dirname, 'settings')
    
  • 重新执行打包
    配置完成后重新运行pkg .即可,打包过程中终端会打印所有被纳入的资源文件,可以直接检查settings下的文件是否在列表中。
    如果不想改package.json,也可以直接在打包命令里显式指定资源路径:
    pkg . --assets "settings/**/*"
    

异常排查点

如果按上面配置还是不生效,逐一检查:

  • 确认settings目录没有被.pkgignore或.gitignore规则命中,被忽略的文件pkg不会打包
  • 如果使用ES Module规范,不要用和import.meta.url强绑定的硬编码路径,优先转成CommonJS方式写资源读取逻辑,或者显式指定路径匹配规则
  • 确认settings目录是在执行pkg命令的工作目录下,不要写错相对路径

内容的提问来源于stack exchange,提问作者Webby

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 06:39:27