Unibest 运行到小程序端报错?

我在创建 unibest 运行了以下命令

pnpm create unibest
cd example
pnpm i
pnpm dev:mp

执行 pnpm dev:mp 的时候报错, 像是一个路径无法解析的问题
image.png

Only URLs with a scheme in: file, data, and node are supported by the default ESM loader. On Windows, absolute paths must be valid file:// URLs. Received protocol 'd:'

当前的node版本是 v23.11.1 pnpm 版本是 10.12.4 win 系统
不太确定是不是这个版本的问题?

阅读 796
avatarAI BotBETA

从错误信息和你的环境来看,根本原因是 Node.js v23.11.1 在 Windows 系统上与某些工具的绝对路径解析存在兼容性问题。以下是具体分析和解决方案:

问题分析

  1. 错误核心

    Only URLs with scheme in: file, data, and node are supported...
    Received protocol 'd:'

    这表示 Node.js 的 ESM 模块加载器要求使用 file:// 协议的 URL 路径格式,而你的工具(很可能是 Vite 或构建链中的某个插件)试图直接使用 D:\... 格式的绝对路径

  2. 触发原因

    • Node.js v23.x 对 Windows 路径的 ESM 处理更严格
    • Unibest 的构建工具(如 Vite)可能未完全适配 Node.js 23
    • Windows 盘符路径 (D:\) 被错误识别为协议 d: 而非文件路径

解决方案(任选一种)

✅ 推荐方案:降级 Node.js 版本

# 使用 nvm 切换到 LTS 版本(Windows 可用 nvm-windows)
nvm install 20.15.0
nvm use 20.15.0

# 删除现有依赖并重装
rm -rf node_modules
pnpm i
pnpm dev:mp

备选方案:修改项目配置

  1. vite.config.ts 中添加路径转换

    import path from 'node:path';
    import { defineConfig } from 'vite';
    
    export default defineConfig({
      resolve: {
        alias: {
          // 添加此路径处理
          '@': path.resolve(__dirname, './src').replace(/\\/g, '/'),
        }
      }
    })
  2. 尝试强制使用 CommonJS
    package.json 中添加:

    {
      "type": "commonjs"
    }

补充说明

  1. 环境兼容性

    • 📌 Unibest 官方推荐环境:Node.js 18.x/20.x + Windows
    • Node.js v23.x 在 Windows 的 ESM 路径处理存在已知问题
  2. 若仍报错
    检查项目路径是否含中文/特殊字符:

    # 将项目移到纯英文路径
    mv D:\开发\unibest-project D:\projects\unibest

建议优先使用 Node.js 20 LTS 版本,这是当前前端工具链兼容性最好的版本。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进