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

如何从require引入的对象中获取module.exports外定义的属性

解决模块导出对象合并的问题

我来帮你梳理下当前遇到的问题和对应的解决方案:

先排查核心笔误问题

首先看你的ServiceY.js,里面写的const utils = require('utils');大概率是个错误!如果要使用lodash的_.merge方法,你应该正确引入lodash包:

const _ = require('lodash');

如果utils是你自己封装的工具模块,那必须确保它正确导出了lodash的merge方法,否则合并操作根本无法执行。

正确的合并实现步骤

假设已经修正了lodash的引入问题,你可以像下面这样编写合并代码(比如新建一个入口文件index.js):

const _ = require('lodash');
// 注意:引入本地模块要写相对路径,避免去node_modules查找
const serviceX = require('./ServiceX');
const serviceY = require('./ServiceY');

// 用空对象作为第一个参数,避免修改原模块的导出对象
const combinedService = _.merge({}, serviceX, serviceY);

// 测试合并结果
combinedService.testFirstName(); // 输出 Nodics
combinedService.testLastName(); // 输出 framework

为什么你的尝试没生效?

可能的原因有这几个:

  • lodash引入错误:ServiceY里的utils不是lodash的正确引入方式,导致_.merge方法不存在,合并操作根本没执行。
  • 未保留合并结果:你可能调用了_.merge(serviceX, serviceY)但没把返回值赋值给新变量,或者直接修改了原模块对象但后续没使用这个修改后的对象。
  • 模块路径错误:require引入本地模块时,必须写相对路径(比如./ServiceX),直接写ServiceX会让Node.js去node_modules目录找第三方包,而不是你的本地文件。

额外优化:直接导出合并后的对象

如果你想让其他模块直接使用合并后的对象,可以新建一个CombinedService.js:

const _ = require('lodash');
const serviceX = require('./ServiceX');
const serviceY = require('./ServiceY');

module.exports = _.merge({}, serviceX, serviceY);

之后其他模块只需要require('./CombinedService')就能拿到包含两个方法的完整对象了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:56:31