Node.js中module.exports导出Map后require丢失Map类型问题解决
问题原因
你导出Map时用了module.exports = {NETWORKS_LOOKUP},这相当于把Map包装在了一个普通对象里导出。当你用const NETWORKS_LOOKUP = require("./constants.js")引入时,拿到的其实是这个普通对象,而不是Map实例——所以调用get方法会报错,instanceof Map也返回false,只是打印时能看到对象里的Map结构而已。
解决方案
有两种方式可以解决:
方式一:直接导出Map实例
修改./constants.js的导出代码,直接把Map实例作为module.exports的值:
const NETWORKS_LOOKUP = new Map([ ["1", "mainnet"], ["3", "ropsten"], ["4", "rinkeyby"], ["5", "goerli"], ["2a", "kovan"], ["31337", "Hardhat"] ]); module.exports = NETWORKS_LOOKUP;
之后用const NETWORKS_LOOKUP = require("./constants.js")引入,拿到的就是Map实例,能正常调用get方法。
方式二:保持对象导出,引入时解构取Map
如果需要在constants.js里导出多个变量,保持原导出方式不变,修改引入代码:
// 解构赋值直接拿到Map实例 const { NETWORKS_LOOKUP } = require("./constants.js");
或者通过对象属性获取:
const constants = require("./constants.js"); const NETWORKS_LOOKUP = constants.NETWORKS_LOOKUP;
这样拿到的就是真正的Map实例,就能正常使用get方法了。
内容的提问来源于stack exchange,提问作者ultramegaok
相关产品推荐
相关产品推荐

