You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修改JavaScript模块同时导出常量与getUser等函数

错误原因

你之前的写法存在语法逻辑问题:逗号运算符会直接返回其左侧Object.freeze(...)的执行结果作为导出值,后面的getUser: function() {}是孤立的无效语法片段,根本没有被合并到导出对象中,自然无法生效。
注意:被Object.freeze冻结后的对象无法新增、修改、删除属性,所有要导出的常量、方法必须在冻结操作前完成合并,冻结后再追加属性会直接失效。

正确修改方案

直接把你要导出的getUser等函数封装成对象,作为Object.assign的参数传入,和两类常量一起合并到目标对象后再冻结即可,完全兼容原有常量的访问逻辑。

修改后的mymodule.js代码如下:

const type1 = require('./constants1.js');
const type2 = require('./constants2.js');

// 自定义导出的方法,后续新增函数直接往这个对象里加就行
const exportMethods = {
  getUser() {
    // 此处填写getUser的具体业务逻辑
  },
  // 其他需要导出的函数可以直接在这里追加
  // getConfig() {},
  // updateUser() {}
}

module.exports = Object.freeze(
  Object.assign(
    Object.create(null),
    type1,
    type2,
    exportMethods
  )
)
消费端使用示例

修改后原有常量访问逻辑完全不变,新增方法可直接调用:

const udb = require('./mymodule.js');
// 原有常量访问正常
console.log(udb.DOUBLE); // 输出1
console.log(udb.FLOAT); // 输出2
// 新增方法可直接调用
const user = udb.getUser();

内容的提问来源于stack exchange,提问作者Sudarshan Soma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 11:45:35