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

Node.js调用其他脚本方法报cannot find module错误如何解决

报错根因

Node.js 使用 ES 模块(import/export 语法)时,默认要求导入本地自定义文件时必须显式携带完整的文件扩展名,你当前的导入语句省略了 .js 后缀,导致系统无法匹配到对应文件。

解决方案

1. 修复 server.js 导入路由的语句

将 server.js 中路由导入行修改为带 .js 后缀的版本:

import redisRoute from './routes/routes.js';

2. 修复 routes.js 里的导入与导出不匹配问题

你当前 redisController.js 仅默认导出了 getAllKeysWithValue 一个方法,但是 routes.js 里尝试导入三个不同的方法,后续也会触发报错,需要同步调整:

第一步:修改 redisController.js 导出逻辑

将三个接口方法改为命名导出:

// getAllKeysWithValue 原有逻辑不变,修改导出方式
export const getAllKeysWithValue =  async (req,res) => {
    client.keys('*',  (err, keys)=> {
        if (err) return console.log(err);
        for(let i =0;i<keys.length;i++){
            client.get(keys[i],function(err,data){
                console.log(`key is ${keys[i]} and value is ${data}`);
                res.send("LOOK AT YOUR LOG :)")
            })
        }
      });   
}
// 补充另外两个方法的定义和导出
export const getRedisValue = async (req, res) => {
  // 你的查询单条redis值的逻辑
}
export const postRedisValue = async (req, res) => {
  // 你的写入redis值的逻辑
}

第二步:修改 routes.js 导入语句,补充 .js 后缀

把原来的三行导入合并为批量命名导入:

import { getAllKeysWithValue, getRedisValue, postRedisValue } from "../controllers/redisController.js";
其他潜在问题修复

你当前的 getAllKeysWithValue 方法存在逻辑缺陷:循环内每次查询到key的值就调用 res.send,第二次调用时会触发「响应头已发送到客户端」的报错,建议修改为收集所有结果后统一返回:

export const getAllKeysWithValue =  async (req,res) => {
    client.keys('*',  (err, keys)=> {
        if (err) return res.status(500).send(err.message);
        const keyValueMap = {}
        let completedCount = 0
        // 空key直接返回
        if(keys.length === 0) return res.send(keyValueMap)

        for(let i =0;i<keys.length;i++){
            client.get(keys[i],function(err,data){
                if (err) return res.status(500).send(err.message);
                keyValueMap[keys[i]] = data
                completedCount++
                // 所有key查询完成后再统一返回
                if(completedCount === keys.length){
                    console.log(keyValueMap)
                    res.send(keyValueMap)
                }
            })
        }
      });   
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:57:03