在执行故事016.004(搬迁图表数据点计算函数)时,发现了严重的参数遗漏问题。原始 u-charts.js 中,多个图表数据点计算函数包含第3个可选参数 process(动画进度,默认值1),但在搬迁时遗漏了该参数,导致运行时错误 ReferenceError: process is not defined。
ReferenceError
process is not defined
Call Stack
getPieDataPoints
mini-ui-packages/mini-charts/dist/src/lib/charts-data/pie-charts.js:35:53
getPieTextMaxLength
mini-ui-packages/mini-charts/dist/src/lib/helper-functions/legend-helpers.js:194:102
uCharts.drawCharts
mini-ui-packages/mini-charts/dist/src/lib/draw-controllers/draw-charts.js:198:144
new uCharts
mini-ui-packages/mini-charts/dist/src/lib/charts/u-charts.js:215:67
eval
mini-ui-packages/mini-charts/dist/src/components/BaseChart.js:77:28
受影响的函数:
getPieDataPoints(series, radius) → 应为 getPieDataPoints(series, radius, process = 1)getRoseDataPoints(series, type, minRadius, radius) → 应为 getRoseDataPoints(series, type, minRadius, radius, process = 1)getGaugeDataPoints(series, categories, gaugeOption) → 应为 getGaugeDataPoints(series, categories, gaugeOption, process = 1)getGaugeArcbarDataPoints(series, arcbarOption) → 应为 getGaugeArcbarDataPoints(series, arcbarOption, process = 1)getArcbarDataPoints(series, arcbarOption) → 应为 getArcbarDataPoints(series, arcbarOption, process = 1)搬迁时错误地使用了 declare const process: number; 全局声明(位于 pie-charts.ts:1-2 和 gauge-charts.ts:1-2),但这在运行时不会工作,导致 process is not defined 错误。
原始 u-charts.js 中的正确实现:
function getPieDataPoints(series, radius) {
var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
// ... 函数体使用 process 参数
}
当前错误的搬迁代码:
// pie-charts.ts:1-2
declare const process: number; // ❌ 错误:全局声明在运行时不存在
export function getPieDataPoints(
series: PieDataItem[],
radius: number
): PieDataItem[] {
// 函数体使用未定义的 process 变量
item._proportion_ = 1 / series.length * process; // ❌ ReferenceError
}
declare const process: number; 全局声明(第1-2行)getPieDataPoints 添加第3个可选参数 process?: number,默认值为1getRoseDataPoints 添加第5个可选参数 process?: number,默认值为1getPieDataPoints 的 JSDoc 注释,添加 process 参数说明getRoseDataPoints 的 JSDoc 注释,添加 process 参数说明process 引用正确使用参数而非未定义的变量参考实现:
export function getPieDataPoints(
series: PieDataItem[],
radius: number,
process: number = 1
): PieDataItem[] {
// ... 函数体
item._proportion_ = 1 / series.length * process; // ✅ 使用参数
}
declare const process: number; 全局声明(第1-2行)getGaugeDataPoints 添加第4个可选参数 process?: number,默认值为1getGaugeArcbarDataPoints 添加第3个可选参数 process?: number,默认值为1getArcbarDataPoints 添加第3个可选参数 process?: number,默认值为1process 引用
getGaugeArcbarDataPoints 中使用了局部变量 currentProcess,需要改用参数getArcbarDataPoints 中使用了局部变量 currentProcess,需要改用参数参考实现:
export function getGaugeArcbarDataPoints(
series: GaugeDataItem[],
arcbarOption: ArcbarOption,
process: number = 1
): GaugeDataItem[] {
let currentProcess = process;
if (currentProcess == 1) {
currentProcess = 0.999999;
}
// ... 使用 currentProcess
}
pie-renderer.ts:240 的调用,传递 chartProcess 参数
u-charts.ts.backup:4990 确认正确的调用方式legend-helpers.ts:218 的 getPieDataPoints 调用
index-finders.ts:373 的 getPieDataPoints 调用
pnpm typecheck 确保无类型错误pnpm build 确保成功生成 .d.ts 文件process 参数的用途process?: number 可选参数declare const process: number; 全局声明已移除process is not defined 已解决docs/小程序图表库示例/u-charts小程序图表库.jsmini-ui-packages/mini-charts/src/lib/charts-data/pie-charts.tsmini-ui-packages/mini-charts/src/lib/charts-data/gauge-charts.tsmini-ui-packages/mini-charts/src/lib/renderers/pie-renderer.tsmini-ui-packages/mini-charts/src/lib/helper-functions/legend-helpers.tsmini-ui-packages/mini-charts/src/lib/helper-functions/index-finders.tsprocess = 1 确保向后兼容此故事需要仔细处理函数签名和调用点的更新。建议按以下顺序实施:
pnpm typecheck 验证类型正确性pnpm build 验证构建成功最后更新: 2025-12-25 文档版本: 1.0