Node.js中导入generateToken函数遇问题求助
解决generateToken函数导入问题
核心问题分析
你的问题大概率是ES模块与CommonJS模块混用,或是代码本身存在语法错误导致的,和passport.js无关,主要是Node.js模块系统的配置问题。
分步解决方法
方法1:统一使用ES模块(推荐)
配置项目为ES模块
在项目根目录的package.json中添加以下配置:"type": "module"这会让Node.js默认将
.js文件当作ES模块处理。修正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 };保持导入语句不变
继续使用你的导入代码:import { generateToken } from "../../server/jwtUtils.js";同时确认文件路径是否正确:检查
../../server/jwtUtils.js是否准确指向目标文件,注意文件名大小写(Linux/macOS系统区分大小写)。
方法2:统一使用CommonJS模块
如果不想用ES模块,可切换为CommonJS规范:
移除ES模块配置
如果你的package.json里有"type": "module",请删除该配置。修改jwtUtils.js的导出方式
const jwt = require("jsonwebtoken"); function generateToken(user) { const token = jwt.sign({ user }, "secretKey", { expiresIn: "1h" }); return token; } module.exports = { generateToken };修改导入语句为require
const { generateToken } = require("../../server/jwtUtils.js");
额外注意事项
- 不要混合使用
import/export和require/module.exports,这是引发导入错误的常见原因 - 确保
jsonwebtoken包已正确安装:执行npm install jsonwebtoken或yarn add jsonwebtoken
内容的提问来源于stack exchange,提问作者anon
相关产品推荐
相关产品推荐

