繁体   English   中英

我无法让节点 js 中的快速路由器工作

[英]I'm having trouble getting the express router in node js to work

普通的get方法在我的主server.js文件上运行良好。 我也使用server.get('/favicon.ico', (req, res) => res.status(204)); 解决网站图标请求的问题。 它工作得很好,同样只在我的主server.js文件上。
当我尝试分离代码时,通过创建一个处理 api 调用的user.js文件,我得到:

::ffff:127.0.0.1 - GET /favicon.ico HTTP/1.1 404 150 - 1.669 ms
::ffff:127.0.0.1 - GET /users HTTP/1.1 404 144 - 0.454 ms

这是我的主文件 - server.js

    const express = require('express');
    const morgan = require('morgan');
    const server = express();
    const router = require('../routes/user');
    const mysql = require('mysql');
    
    server.use(morgan('short'));
    
    //server.use(express.static('../public'));
    server.use(express.json());
    server.use(express.urlencoded({ extended: false }));
    
    router.use(router);
    
    server.get('/', (req, res) => {
        console.log("Test!");
        res.send("This works!");
    });  
    
    //server.get('/favicon.ico', (req, res) => res.status(204));
    
    server.listen(3003, () => console.log('Program is running! Port: 3003'));

这是我的user.js文件:

    const express = require('express');
    const mysql = require('mysql');
    const router = express.Router();
    
    router.get('/users', (req, res) => {
        res.send('Hello');
    });
    
    router.get('/favicon.ico', (req, res) => res.status(204));
    module.exports = router;

我不确定这是否相关,但我在尝试使用server.use(express.static('../public'))时也遇到了同样的问题。 它不起作用。 我无法提供我的 html 文件。 我在请求时尝试使用 csp 标头,但这不起作用。 在 html header元标记中设置 CSP 策略也不起作用。

如果您在任何版本中发现问题,这些是某些模块和技术的版本:
Apache 2.4.39
节点 6.9.0 Windows 7 - 是的,我知道,但请耐心等待

如果有人可以帮助解决路由器问题或 static 文件服务器问题,将不胜感激。

谢谢你。

一个简单的方法是,在你的 server.js 文件中添加

server.use("/user", require("./routes/routes"));

注意:这里的 routes 是一个文件夹,而 routes.js 是该文件夹内的一个文件。

然后在你的 route.js 文件中添加

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

const user = require('../controllers/user.controller');

// register controllers
const userController = new user();
userController.register(router);


module.exports = router;

在用户注册(路由器)方法中传递您的路由器。 并且可以在您的 user.js 文件中轻松访问它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM