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

JS导入函数报错:getUser is not a function 问题求助

问题排查:getUser is not a function 错误

运行createCron函数时始终报错“getUser not a function”,但getUser已在对应文件中定义并导出,以下是相关代码及排查方向:

1. BotJobActions.js

定义异步函数getUser(根据jobId查询关联用户),并与其他函数一同导出:

const getUser = async (jobId) =>{
    await mongoConnect(process.env.DB_PWORD)
    try {
        const user = await User.findOne({pendingJobs:jobId})
        return user
    } catch (err) {
        console.log(err)
    }
    
}

module.exports = { newJob, getUserJobs, getUser, updateUserJob, destroyUserPendingJob, destroyUserCompletedJob, activateJob, deactivateJob, endJob }

2. TestDate.js

导入getUser,定义runBot函数(遍历任务并调用getUser获取用户),同时导出runBot等函数:

const { getUser } = require("../bot/botJobActions");


const runBot = async (todayJobs) =>{
    // await mongoConnect(process.env.DB_PWORD)
    
    for(const job of todayJobs){
        const clubPassword = decryptToken(job.clubPassword.token, job.clubPassword.iv)
        const user = await getUser(job.id)

        if(job.proxy){
            const proxyConfig = await getProxyConfig(user)
            if(proxyConfig.status === "no proxy") console.log("[-] Proxy Config Retrival Error/Running Without Proxy")
            // await startBot(member=job.member?job.member : null, proxy=proxyConfig.status === 'success'?proxyConfig:null, job.clubUsername, clubPassword, job.startTime, job.endTime, job.courseList, job.id)
            await console.log(member=job.member?job.member : null, proxy=proxyConfig.status === 'success'?proxyConfig:null, job.clubUsername, clubPassword, job.startTime, job.endTime, job.courseList, job.id)
        }else{
            // await startBot(member=job.member?job.member : null, proxy=null, job.clubUsername, clubPassword, job.startTime, job.endTime, job.courseList, job.id)
            await console.log(member=job.member?job.member : null, proxy=null, job.clubUsername, clubPassword, job.startTime, job.endTime, job.courseList, job.id)
        }
    }
    return
    
}

module.exports = { runBot, getJobs }

3. CreateCron.js

导入runBot,定义createCron函数(创建定时任务在指定时间调用runBot):

const schedule = require('node-schedule');
const { runBot } = require('./testDate');

const createCron = (job) =>{
    const startDate = new Date(job.botStartDate)
    const startTime = new Date(`09/19/2000 ${job.botStartTime}`)

    startDate.setHours(startTime.getHours())
    startDate.setMinutes(startTime.getMinutes())


    console.log(startDate.toUTCString())
    schedule.scheduleJob(startDate, async function(){
        console.log('run job')
        await runBot([job])
    })
}

排查方向:

  • 文件路径验证:检查TestDate.js中require("../bot/botJobActions")的相对路径是否正确。可在TestDate.js开头添加console.log(require("../bot/botJobActions")),查看导出对象是否包含getUser。
  • 模块缓存清理:Node.js会缓存已加载的模块,若修改过BotJobActions.js未重启服务,可能仍使用旧缓存。尝试重启应用,或用nodemon等工具自动刷新模块。
  • 导出拼写检查:确认BotJobActions.js中导出的getUser大小写、拼写完全正确,没有被其他代码覆盖或重定义。
  • 导入模块完整性:检查BotJobActions.js中mongoConnect、User是否已正确导入,若这些依赖加载失败,会导致模块导出异常。
  • 定时任务上下文验证:在runBot函数开头添加console.log(typeof getUser),确认定时任务触发时getUser的类型,排查是否存在上下文丢失问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 09:31:13