Node.js使用franc、langs模块开发猜语言游戏 报pkg不可迭代错误
问题原因
- 报错
TypeError: pkg is not iterable的触发点为代码第三行的const [langs] = pkg,你使用了数组解构语法处理langs模块的导出值,但该模块默认导出的是对象类型,不支持数组迭代解构操作。 - 该行代码本身无实际作用,后续你调用语言查询方法时使用的是
pkg.where,并未用到解构出来的langs变量,属于多余代码。
修正方案
直接删除多余的解构行,同时可以调整导入命名让代码逻辑更清晰,修正后的完整代码如下:
import { franc } from 'franc' // 直接将导入的模块实例命名为langs,无需使用pkg作为别名 import langs from 'langs'; const input = process.argv[2]; const langCode = franc(input); if (langCode === 'und') { console.log("What language is this???") } else { const language = langs.where("3", langCode); // 取name属性获取语言的可读名称,避免直接输出完整对象 console.log(`I think it's ${language.name}`) }
验证注意事项
- 运行代码时需要传入待识别的文本参数,示例运行命令:
node index.js 'こんにちは' - 若传入空值或无法识别的文本,franc会返回
und标识,触发提示语句
内容的提问来源于stack exchange,提问作者MrAlan
相关产品推荐
相关产品推荐

