Node.js 模块引用问题。

由于启动文件代码太多,我想把路由代码 写到模块文件夹里。
但是查看日志返回undefined,为什么?

router.js文件:

//加载router模块
const koa_router = require('koa-router');
//实例化路由
const router = new koa_router();

module.exports.get= function() {
   router.get('/', (ctx, next) => {
        ctx.render('index');
         
   });
};

启动文件 server.js: (其它文件加载不一一些了,抽取这个部分代码)

      //加载路由自定义模块
      k_router = require('Router'),
      //实例化Koa
      app = new Koa(),
      //实例化路由
      router = new koa_router();
      
      
      
      //执行自定义路由模块
      k_router.get();
      console.log(k_router.get());  //undefined
      

模块文件写的不对吗?

阅读 2.2k
2 个回答

一个function,里面没有任何return,该函数执行肯定返回undefined。
还有一点,你get方法中设定的router和server.js中的也不是同一个实例,建议你

  1. 或者将server.js中的router以参数形式传入get方法,然后get方法操作这个router。
  2. 或者get返回router,server.js直接使用get返回的router
//加载路由自定义模块
k_router = require('Router'),

这块加载自定义模块写法是不是有问题,如果是自定义模块,推荐使用 相对或者绝对路径。
你代码中的写法会解析成 内置模块或者依赖模块包

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题