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

如何在不修改引用文件的前提下为.js文件新增导出并保留默认导出

不修改引用文件的前提下扩展模块导出内容

问题场景

现有common.js仅导出一个对象,some_other_file_1.js通过const common = require('common')引用并使用该对象。需要修改common.js新增导出cool_func等内容,但不能修改some_other_file_1.js。

原代码

some_other_file_1.js(禁止修改)

const common = require('common')

const foo = () => {
  common.dostuff()
}

common.js(需修改)

const common = {
  dostuff: () => {
    // 省略业务代码
  },
}

const cool_func = () => {
  // 省略业务代码
}

module.exports = common
// >>> 希望同时导出cool_func <<<

解决方案

核心思路是在原导出对象上挂载新的属性/方法,这样既不会破坏原有引用文件的逻辑,又能新增导出内容。有两种写法:

写法一:先挂载到原对象再导出

const common = {
  dostuff: () => {
    // 省略业务代码
  },
}

const cool_func = () => {
  // 省略业务代码
}

// 将新函数挂载到原导出对象上
common.cool_func = cool_func;

module.exports = common;

写法二:直接给module.exports添加属性

module.exports = {
  dostuff: () => {
    // 省略业务代码
  },
}

const cool_func = () => {
  // 省略业务代码
}

// 直接为导出对象新增属性
module.exports.cool_func = cool_func;

使用新导出内容

其他需要使用cool_func的文件,可以通过两种方式调用:

  • 解构获取:const { cool_func } = require('common')
  • 从导出对象中获取:const common = require('common'); common.cool_func()

而some_other_file_1.js中的common.dostuff()调用完全不受影响,无需任何修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 07:11:05