【经验之谈】Nodejs中cli-table最新版本不支持head为中文字符

【经验之谈】Nodejs中cli-table最新版本不支持head为中文字符

cli-table 最新版本 抛弃了 unicode-eastasianwidth

导致中文head配置的时候出现

有同学以后用这个库的时候最好选择0.0.1的tag

2 回复

【经验之谈】Nodejs中cli-table最新版本不支持head为中文字符

在使用Node.js中的cli-table库时,你可能会遇到一个令人头疼的问题:最新的cli-table版本(例如3.x或更高版本)不再支持将中文字符作为表头(head)。这主要是因为最新版本已经不再依赖于unicode-eastasianwidth库。

背景信息

cli-table是一个用于生成命令行界面表格的库。它能够帮助开发者在终端中输出结构化的数据。然而,在最新版本中,该库对字符宽度的支持发生了变化,导致中文字符作为表头时会出现显示问题。

解决方案

如果你需要在表头中使用中文字符,可以考虑使用较早版本的cli-table。具体来说,可以安装0.0.1版本,该版本仍然支持中文字符作为表头。

以下是如何安装并使用0.0.1版本的步骤:

  1. 安装特定版本
npm install cli-table@0.0.1
  1. 使用cli-table创建表格
const Table = require('cli-table');

// 创建一个新的表格实例
const table = new Table({
    head: ['姓名', '年龄', '职业'], // 中文表头
    colWidths: [10, 10, 10]
});

// 添加数据行
table.push(
    ['张三', '28', '工程师'],
    ['李四', '30', '设计师']
);

// 输出表格到控制台
console.log(table.toString());

示例输出

当你运行上述代码时,你应该会看到如下格式化的表格:

+------+-----+----------+
| 姓名  | 年龄 | 职业     |
+------+-----+----------+
| 张三  | 28  | 工程师   |
| 李四  | 30  | 设计师   |
+------+-----+----------+

总结

如果你需要在cli-table中使用中文字符作为表头,建议使用0.0.1版本。这是因为较新的版本不再支持中文字符作为表头,而0.0.1版本则没有这个问题。希望这能帮助你在使用cli-table时避免遇到不必要的麻烦。


当使用 cli-table 库来创建表格时,如果希望在最新版本中使用中文作为表头(head),可能会遇到一些问题。这是因为最新版本的 cli-table 抛弃了 unicode-eastasianwidth 库,这导致了处理中文字符时可能出现显示问题。

解决方案

一种解决方案是降级到 cli-table 的旧版本,例如 0.0.1 版本,因为该版本还保留了对 unicode-eastasianwidth 的依赖。但是,这并不是最优解,因为你可能需要其他功能或修复的错误。

另一种解决方案是自己处理中文字符的宽度问题。你可以手动调整列宽以适应中文字符。

以下是一个示例代码,展示了如何使用最新版本的 cli-table 并正确处理中文字符:

const Table = require('cli-table3');

// 创建一个新的表格实例
const table = new Table({
    head: ['姓名', '年龄'],
    colWidths: [10, 10] // 手动设置列宽
});

// 添加数据行
table.push(
    ['张三', '25'],
    ['李四', '30']
);

console.log(table.toString());

在这个示例中,我们通过 colWidths 属性手动设置了每列的宽度,从而确保中文字符能够正确显示。

解释

  • Table: 使用 cli-table3 模块创建一个表格实例。
  • head: 设置表头,并提供中文字符。
  • colWidths: 手动设置列宽,以适应中文字符的宽度。这里我们假设中文字符宽度为 10 个字符空间。

这种方法可以帮助你在使用最新版本的 cli-table 时,正确处理中文字符作为表头。如果你发现默认的列宽不够用,可以适当调整 colWidths 的值。

回到顶部