使用require导入y18n模块实例化后出现i18n.__ is not a function错误
问题原因及解决方案
你遇到的问题是因为y18n v5及以上版本修改了导出方式,不再提供构造函数,而是直接导出工厂函数,不能用new关键字调用。
具体分析
旧版本(v4及以下)的y18n确实支持new Y18n()的写法,但从v5开始,官方重构了API,默认导出的是一个可直接执行的工厂函数,用new调用会导致创建的实例不包含__等核心方法,从而抛出i18n.__ is not a function错误。
解决办法
方案1:适配新版本API
去掉new关键字,直接调用工厂函数创建实例:const Y18n = require('y18n') const i18n = Y18n() // 直接调用,无需new也可以传入配置参数:
const i18n = Y18n({ directory: './locales', locale: 'en' })方案2:回退到旧版本
如果不想修改代码,可以安装v4版本的y18n:npm install y18n@4 --save
验证版本
可以通过以下命令查看当前安装的y18n版本:
npm list y18n
内容的提问来源于stack exchange,提问作者John Smith
相关产品推荐
相关产品推荐

