Open
[Bug][P0] getDailyWords / getProgress 云函数使用命名导入,与 node-appwrite v11 不兼容 #1
雅皮士Add on  9 days ago
雅皮士
雅皮士
9 days ago Create

问题描述

云函数 getDailyWords 与 getProgress 使用了 命名导入 方式引入 node-appwrite:

// harmony_cloud/functions/getDailyWords/main.js:1
// harmony_cloud/functions/getProgress/main.js:1
import { Client, Databases, Query } from 'node-appwrite';

而项目其余 4 个函数(register / login / learnWord / db-init)以及 SKILL.md 第 3 章「云函数编写规范」第 2 条均要求使用 默认导入:

import sdk from 'node-appwrite';
const { Client, Databases, Query } = sdk;

根因

项目锁定 node-appwrite@^11.0.0(为兼容自托管 Appwrite v1.9.0 的 node-16.0 运行时)。v11 是 CJS 兼容的默认导出,不支持命名导入;命名导入会抛 export 'Client' not found,仅在 v14+(需 Node ≥ 18)才支持。

影响

两个函数部署后在 Appwrite node-16 运行时必然报错,导致:

  • 首页无法加载学习进度(getProgress)
  • 闪卡页/测试页无法取单词(getDailyWords)

属于核心链路 P0 阻断性缺陷。

复现方式

在 node-16.0 运行时部署 getDailyWords / getProgress 并调用执行端点,观察函数日志出现 SyntaxError: Named export 'Client' not found。

修复建议

两处改为默认导入,与其余函数保持一致:

import sdk from 'node-appwrite';
const { Client, Databases, Query } = sdk;

已准备对应 PR,将一并修复。

环境

  • Appwrite 自托管 v1.9.0 / 运行时 node-16.0
  • node-appwrite ^11.0.0
likedislike
雅皮士雅皮士
9 days ago Associated pull request
雅皮士雅皮士
9 days ago Associated pull request