赞
踩
这样可以将js模块文件中特定的数据和方法向外导出
报错时我的代码:
导出方式:module.exports.router1 = router
外部文件导入方式:const router = require(‘router模块路径’)
中间件注册挂载方式:app.use(router)
根据它提示的问题路径,我找到了导致报错的地方,原因是在express模块文件中,存在一个语句,它标明app.use()这个设置全局中间件的方法中不能导入一个中间件文件。
问题是:我以点语法挂载router对象到导出模块的对象空间中,在导出时使用的却是导出的模块对象,而不是挂在上去的那个router对象,这就导致了错误
办法一、
改写一下挂载方式,不使用点语法,而是直接写module.exports = 函数名,这样就能让服务器正常运行了
办法二、
改一下引入方式,在原有的module.exports.router1 = router 点语法的导出基础上,外部其他文件导入该模块并挂在为中间件时,应该是
const router = require(‘router模块路径’)
app.use(router.router1)
之后就能如下正常运行了
总结:对于此问题,问题在于module.exports默认指向的是一个对象空间,所以可以往它上面通过点语法挂载属性和属性值,向外导出的时候,外部需要使用到的空间里面的属性,但是此处定义的router路由是一个对象,所以需要router.router1来调用其内需要被使用到的属性
而module.exports = router的方式则是直接替换的module.exports的指向空间,外部文件require导入获取到的直接就是需要被使用到的router属性了
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。