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

Node.js 6.11模块导出传参后调用函数报错排查

解决Node.js模块调用时的"Cannot read property 'printMessage' of undefined"错误

嘿,这个问题我太熟悉了!咱们来拆解一下哪里出了问题:

错误根源

你在lib.js里导出的libService函数,虽然接收了msg参数并赋值给了msgToPring(顺便提一句,这里拼写错了,应该是msgToPrint),但这个函数没有返回任何值!

当你在app.js里执行myService = require('./lib.js')("Hello World")时,其实是先加载lib.js,然后立即调用导出的libService函数。因为libService没有返回值,所以myService会被赋值为undefined,这时候调用myService.printMessage()自然就会报错啦。

修正方案

我们只需要让libService函数返回一个包含printMessage方法的对象就行,闭包会帮我们保留住msg参数的值。这里给你两种常见的写法:

写法一:直接返回方法对象

// lib.js 修正版
module.exports = function libService(msg) {
  return {
    printMessage: function() {
      console.log(msg);
    }
  };
}

写法二:保留变量的写法(修正拼写错误)

// lib.js 另一种修正方式
module.exports = function libService(msg) {
  var msgToPrint = msg; // 修正拼写错误
  return {
    printMessage: function() {
      console.log(msgToPrint);
    }
  };
}

现在再运行app.js,就能正常打印"Hello World"了!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 06:45:54