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

Node.js自定义模块导出函数调用提示not a function错误如何解决

Node.js 自定义模块调用报错解决方案

问题原因

你在processTest.js中使用的是module.exports = runTest默认导出语法,代表整个模块导出的值就是runTest函数本身,而非挂载了runTest方法的对象。主脚本中错误将引入的processTest变量当作包含属性的对象调用,自然会抛出类型错误。

修正方案

有两种可选修正方式:

  • 方案1:修改主脚本调用逻辑,直接调用引入的变量本身
    将原有调用代码
processTest.runTest();

修改为

processTest();
  • 方案2:修改processTest.js导出逻辑,改为导出包含方法的对象
    将原有导出代码
module.exports = runTest;

修改为

module.exports = { runTest };

可选优化

你当前代码中将spawn逻辑写在模块顶层,会导致模块第一次被引入时就触发子进程执行,而非调用runTest时才执行。如果要实现调用函数才触发子进程,可将spawn逻辑移到runTest函数内部:

'use strict';

const { spawn } = require( 'child_process' );

function runTest() {
  const ls = spawn( 'ls', [ '-lh', '/usr' ] );
  ls.stdout.on('data', (data) => {
    console.log(`stdout: ${data}`);
  });

  ls.stderr.on('data', (data) => {
    console.log(`stderr: ${data}`);
  });

  ls.on('close', (code) => {
    console.log(`child process exited with code ${code}`);
  });
}
module.exports = runTest;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 16:45:05