如何让路由器在不同的文件中工作

how to get router to work in a different file

如何正确导出路由器模块以与 showscreen = true 语句一起使用?这是我正在尝试做的事情的简化版本。

server.js

var express = require('express');
var app = express();
var http = require('http').Server(app);
const path = require('path');
var io = require('socket.io')(http);
var showscreen = require('./listening.js');
var router = express.Router();
app.use(express.static(__dirname + '/server'));
    app.get('/', function(req, res){
    console.log("hello");
    res.sendFile('C:/Users/O77616/Documents/practiceCode/client.html');
});

router.get('/server', function(req, res){
console.log("hello");
res.sendFile('C:/Users/O77616/Documents/practiceCode/grumpy.html');
});

app.post('/', function(req,res) {
   res.send('post it all');
});

http.listen(3000, function(){
    console.log('listening on localhost:3000');
});
module.exports = function(app) {
   app.use('/server', router); 
};

listening.js

var server = require('./server.js');
var showscreen = true;
if (showscreen) {
   app.use('/server', server);

  //possibly insert more to make router.get work
}

所以我想导出router.get方法,根据showscreen是否为真,在listening.js方法中使用。当前应用程序未定义 我遵循了本教程,但我仍然感到困惑 https://expressjs.com/en/guide/routing.html

评论更新:

server.js

var io = require('socket.io')(http);
var express = require('express');
var routes = require('./routes/index');
var app = express();

var http = require('http').Server(app);

app.use('/', routes);

app.get('/', function(req, res){
   console.log("hello");
   res.sendFile('C:/Users/O77616/Documents/practiceCode/client.html');
});

http.listen(3000, function(){
   console.log('listening on localhost:3000');
});

routes/index.js

 var express = require('express');
 var router = express.Router();
 var showscreen = true;

if (showscreen) {
    router.get('/', function(request, response){ 
    response.sendFile('C:/Users/O77616/Documents/practiceCode/grumpy.html');
    });
}

module.exports = router;

我删除了 listening.js 文件。不确定这是否清楚但我想要它所以如果 showscreen 为真 grumpy.html 将出现,否则 client.html,并且我更复杂的代码的工作方式(这非常简化)showscreen 只能在index.js

在您的 server.js 中添加以下代码

var express = require('express');
var routes = require('./routes/index');
var app = express();

app.use('/', routes);

//其他与初始化和启动服务器相关的代码代码

在您的路线文件夹中创建一个 index.js 。有以下代码

var express = require('express');
var router = express.Router();

/* GET index page. */
router.get('/', function(request, response){
   //code to execute 
});

module.exports = router;

希望你能明白。