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

Node.js中导入generateToken函数遇问题求助

解决generateToken函数导入问题

核心问题分析

你的问题大概率是ES模块与CommonJS模块混用,或是代码本身存在语法错误导致的,和passport.js无关,主要是Node.js模块系统的配置问题。

分步解决方法

方法1:统一使用ES模块(推荐)

  1. 配置项目为ES模块
    在项目根目录的package.json中添加以下配置:

    "type": "module"
    

    这会让Node.js默认将.js文件当作ES模块处理。

  2. 修正jwtUtils.js的语法错误
    原代码中jwt.sign的参数多了一层冗余括号,这会触发语法错误,修正后:

    import jwt from "jsonwebtoken";
    
    function generateToken(user) {
      // Generate and return jwt token
      const token = jwt.sign({ user }, "secretKey", { expiresIn: "1h" });
      return token;
    }
    
    export { generateToken };
    
  3. 保持导入语句不变
    继续使用你的导入代码:

    import { generateToken } from "../../server/jwtUtils.js";
    

    同时确认文件路径是否正确:检查../../server/jwtUtils.js是否准确指向目标文件,注意文件名大小写(Linux/macOS系统区分大小写)。

方法2:统一使用CommonJS模块

如果不想用ES模块,可切换为CommonJS规范:

  1. 移除ES模块配置
    如果你的package.json里有"type": "module",请删除该配置。

  2. 修改jwtUtils.js的导出方式

    const jwt = require("jsonwebtoken");
    
    function generateToken(user) {
      const token = jwt.sign({ user }, "secretKey", { expiresIn: "1h" });
      return token;
    }
    
    module.exports = { generateToken };
    
  3. 修改导入语句为require

    const { generateToken } = require("../../server/jwtUtils.js");
    

额外注意事项

  • 不要混合使用import/export和require/module.exports,这是引发导入错误的常见原因
  • 确保jsonwebtoken包已正确安装:执行npm install jsonwebtoken或yarn add jsonwebtoken

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 01:20:00