Node.js中如何导出Router与变量?尝试导出报错求解决
解决导出router和变量后的错误问题
问题根源是导出格式变了,但导入逻辑没同步更新:之前直接导出router实例,现在导出的是包含router、var1、var2的对象,导入时必须对应调整。
具体修改方案
1. 如果你用CommonJS(require/module.exports)
原来的导入代码(对应单router导出):
const router = require('./你的路由文件路径');
现在要改成两种方式任选其一:
- 解构赋值直接获取需要的成员:
const { router, var1, var2 } = require('./你的路由文件路径'); // 之后正常使用 router.get()、var1 即可
- 先导入整个模块对象,再取对应属性:
const moduleObj = require('./你的路由文件路径'); const router = moduleObj.router; const var1 = moduleObj.var1; const var2 = moduleObj.var2;
2. 如果你用ES模块(import/export)
如果你的导出是用module.exports,导入时可以用:
import moduleObj from './你的路由文件路径'; const { router, var1, var2 } = moduleObj;
如果改成ES标准导出更规范:
// 路由文件里改成 export { router, var1, var2 }; // 或者加上默认导出 export default { router, var1, var2 };
对应的导入方式:
// 对应命名导出 import { router, var1, var2 } from './你的路由文件路径'; // 对应默认导出 import moduleObj from './你的路由文件路径'; const { router, var1, var2 } = moduleObj;
排查要点
如果还是报错,检查这两点:
- 确认导入路径是否正确,别写错文件名或目录层级
- 检查使用router的代码,比如之前写
router.get('/path', ...),现在是否确实拿到了router实例,而不是整个导出对象(如果拿到对象,调用router.get()会报TypeError: router.get is not a function)
内容的提问来源于stack exchange,提问作者Gourav Gassi
相关产品推荐
相关产品推荐

