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

导入自定义模块jwtVerify报错求助(路径确认无误)

解决思路:模块导入失败问题

问题重现

报错信息:

Cannot find module '/usr/src/app/mware/jwtVerify' imported from /usr/src/app/routes/projects/projectsRouter.js

导入代码:

import jwtVerify from "../../mware/jwtVerify"

待导入模块代码:

import jwt from "jsonwebtoken";
import fs from "fs";

function jwtVerify(req, res, next){
  const jwtkey = fs.readFileSync(process.env.JWT_PUBLIC_KEY);
  if (!req.headers["auth"]) {
    return res.status(401).send("No token provided");
  }
  const token = req.headers["auth"];
  jwt.verify(token, jwtkey, { algorithms: ["RS256"] }, (err, decoded) => {
    if (err) {
      console.log(err);
      return res.status(418).send("Failed to authenticate token");
    }
    req.decoded = decoded;
    next();
  });
};

module.exports = jwtVerify;

核心问题与解决步骤

  • 导出与导入的模块系统不匹配
    你用ES模块的import语法导入,但模块用的是CommonJS的module.exports导出,两者不兼容。把模块里的module.exports = jwtVerify改成ES模块的默认导出:

    export default jwtVerify;
    
  • 明确文件扩展名
    Node.js在ES模块模式下要求导入时明确文件扩展名,试试把导入语句改成:

    import jwtVerify from "../../mware/jwtVerify.js"
    
  • 检查项目的模块模式配置
    查看项目根目录的package.json:

    • 如果有"type": "module",说明项目是ES模块模式,所有.js文件都会被当作ES模块,这时候必须用export/import语法,不能用module.exports/require;
    • 如果没有"type": "module",默认是CommonJS模式,用import的话需要把文件改成.mjs扩展名,或者在package.json里添加"type": "module"切换成ES模块模式。
  • 验证文件路径与大小写
    Linux系统文件名区分大小写,确认mware目录下的文件确实是jwtVerify.js,而不是JwtVerify.js或者其他大小写变体;同时检查文件是否真的存在于指定路径,有没有拼写错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 15:32:44