bug背景
运行项目(比如vue项目)出现错误:
Cannot assign to read only property 'exports' of object '#<Object>'
代码大概是:
module.exports = lang;
网上基本上的说法都是webpack的使用问题,import和module.exports不能混用。
虽然改成推荐的export default lang;确实能解决问题,
但是有时候你并没有混用,因而产生疑惑了。
真正错误
仔细检查代码。这里的例子是用在i18n模块
lang里面有两项使用了同一个key。
大概是这样
let lang = {
"ABC1":"xxxx yyyy.",
"ABC1":"zzzzzzz.",
}
这个代码,在使用export default语法时并不会报错。
但是在module.exports 的写法时就不行。
修复这个问题把其中一个ABC1改成ABC2,就行了。
事实证明,代码错误会导致报错,并不一定是所谓的import和module.exports混用导致的错误。
额外的说明
之所以发现这一点,是因为当时还想用node脚本读取这个配置,检查配置是否正确。但是配置babel又很麻烦,所以想要写成module.exports的方式,使得两边都能通用。
也成export default会导致node报错SyntaxError: Unexpected token export
当然,期待官方团队,让node支持的es6特性越来越多。
顺便说一下,nodejs的作者新写了deno,默认就是支持es6的。
本文探讨了一个关于`module.exports`和`export default`在i18n模块中冲突的问题,错误并非源自import/export的混用,而是由于重复的key导致。修复方法是确保键名唯一。作者还提到node.js对ES6支持的局限性及期待未来改进。
648

被折叠的 条评论
为什么被折叠?



