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

使用stlite打包Streamlit应用时本地文件系统挂载报错求助

解决方案:Stlite Windows下本地文件访问启动报错修复

核心问题定位

报错提示的Received protocol 'c:'是因为Windows本地路径未正确转换为符合ESM loader要求的file://协议格式,即便你尝试了file:///c:/...格式,可能存在大小写、路径分隔符或配置逻辑的问题。

分步解决步骤

1. 修正package.json的nodefsMountpoints配置

确保路径是标准的Windows file URL格式:

  • 必须以file:///开头(三个斜杠)
  • 盘符使用大写(如C:而非c:)
  • 路径分隔符替换为正斜杠/

示例配置:

{
  "name": "stlite-app",
  "version": "1.0.0",
  "stlite": {
    "nodefsMountpoints": {
      "/app-data": "file:///C:/Users/Erwan/Documents/StliteAppData"
    }
  }
}

2. 用动态路径替代硬编码(推荐)

如果使用@stlite/desktop打包,避免硬编码路径,用Electron的API动态获取合法路径,彻底规避格式问题:

  1. 在项目根目录创建stlite.config.js文件
  2. 添加以下代码:
const { app } = require('electron');
const path = require('path');

// 获取Electron默认的用户数据目录,避免权限问题
const localDataPath = path.join(app.getPath('userData'), 'stlite-local-data');
// 转换为标准file URL格式
const fileUrl = `file:///${localDataPath.replace(/\\/g, '/')}`;

module.exports = {
  stlite: {
    nodefsMountpoints: {
      "/data": fileUrl
    }
  }
};

3. 验证路径合法性

在Windows命令行执行以下命令,检查路径是否符合要求:

node -e "console.log(new URL('file:///C:/你的路径'))"

如果命令无报错并输出正确的URL对象,说明路径格式合法。

4. 清理缓存后重新打包

删除项目的dist目录和node_modules/.cache文件夹,然后重新执行打包命令,确保新配置生效:

rmdir /s dist
rmdir /s node_modules\.cache
npm run build

额外注意事项

  • 不要将数据目录放在需要管理员权限的路径下(如C:\Program Files),优先选择用户目录(如Documents、AppData)
  • 确保打包后的Electron应用拥有文件系统读写权限,Windows下可在应用属性的「兼容性」中关闭「以管理员身份运行此程序」(如果开启的话)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 12:01:08