Node.js 404快速路由错误

Node.js 404快速路由错误,node.js,express,routing,Node.js,Express,Routing,我不知道这个简单的路由任务哪里出了问题。当我转到localhost:3030/staff时,我得到了“cannotget/staff”和一个404错误 这是我的设置 app.js: const express = require('express'); const app = express(); const port = process.env.PORT || 3030; const staffRouter = require('./routes/staffrouter.js'); app

我不知道这个简单的路由任务哪里出了问题。当我转到localhost:3030/staff时,我得到了“cannotget/staff”和一个404错误

这是我的设置

app.js:

const express = require('express');
const app = express();
const port = process.env.PORT || 3030;

const staffRouter = require('./routes/staffrouter.js');

app.use('/static', express.static(__dirname + './public'));

app.use('./staff', staffRouter);

app.get('/', function(req, res) {
    res.render('index.pug');
});

app.listen(port);
我已经尝试在GET/POST请求中使用路径“/staff”,但这不起作用,而且根据我正在做的教程,它也不应该起作用。我真的卡住了

/routes/staffrouter.js:

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

const staff = require('../staff').staff;
const urlEncoded = (express.urlencoded({ extended: true }));

router.get('/', function(req, res, next) {
    res.render('staff.pug', { 
        deptOptions: staff.populateSelectors('department'),
        posOptions: staff.populateSelectors('position'),
        empArray: staff.readWriteJSON()
    });
 });

// Add new staff obj
router.post('/', urlEncoded, function(req, res, next) {
    let sObj = req.body;
    let dataArray = staff.readWriteJSON();

    //console.log('data:', data);
    dataArray.push(new staff.Employee(
        sObj.fName, 
        sObj.lName, 
        sObj.staffNum, 
        sObj.department, 
        sObj.position, 
        sObj.email, 
        sObj.phone
     ));
    staff.readWriteJSON(dataArray)
    res.render('../views/staff.pug', { 
        deptOptions: staff.populateSelectors('department'),
        posOptions: staff.populateSelectors('position'),
        empArray: staff.readWriteJSON()
    });
});

module.exports = router;

错误的范围更改订单

app.use('/static', express.static(__dirname + './public'));
const staffRouter = require('./routes/staffrouter.js');

错误的范围更改订单

app.use('/static', express.static(__dirname + './public'));
const staffRouter = require('./routes/staffrouter.js');


可能是try“/staff”而不是“/staff”尝试了,但没有效果。但是谢谢你。你为什么不直接用app.get('/staff',function(){})代替路由器呢。您可以将应用程序作为参数传递到其他文件中;你能告诉我你的终端服务器端的错误堆栈吗?奇怪的是,它没有给出错误堆栈。可能是用“/staff”代替“/staff”试试看,没用。但是谢谢你。你为什么不直接用app.get('/staff',function(){})代替路由器呢。您可以将应用程序作为参数传递到其他文件中;你能告诉我你的终端服务器端的错误堆栈吗?这很奇怪,它没有给出错误堆栈。谢谢,这很有效。虽然我不明白为什么。“路由”文件夹未处于公用状态。您能告诉我发生了什么吗?当您使用静态中间件express查看公用文件夹时,路由位于公用文件夹内以使其可用它必须是静态的希望您得到itExpress查找相对于静态目录的文件,因此,静态目录的名称不是URL的一部分。我遇到了一个类似的问题,在我的路由文件夹中,文件名为
post.js
,但我在
server.js
文件中使用了
posts.js
,这是一个打字错误。谢谢,成功了。虽然我不明白为什么。“路由”文件夹未处于公用状态。您能告诉我发生了什么吗?当您使用静态中间件express查看公用文件夹时,路由位于公用文件夹内以使其可用它必须是静态的希望您得到itExpress查找相对于静态目录的文件,因此,静态目录的名称不是URL的一部分。我遇到了一个类似的问题,在我的路由文件夹中,文件名为
post.js
,但我在
server.js
文件中使用了
posts.js
,这是一个打字错误。