【问题标题】:cannot GET / express.js routing无法 GET / express.js 路由
【发布时间】:2018-03-03 11:03:40
【问题描述】:

我正处于想要使用 MEAN Stack 构建的简单任务管理器的早期阶段。 我可以计算/解决一个简单的路由问题。除了 404 客户端错误,我在终端或控制台中看不到任何错误消息。

根路径没问题。我得到回复 我使用 html 文档为两者呈现 ui。

这就是我设置server.js的方式

var express = require('express')
var path = require('path')
var bodyParser = require('body-parser')

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

const port = '3456'


app.use('/', index)
app.use('api', tasks) <= HERE

//view engine
app.set('views', path.join(__dirname, 'views'))
app.set('view engine', 'ejs')
app.engine('html', require('ejs').renderFile);

//static folder
app.use(express.static(path.join(__dirname, 'client')))
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({extended: false}))



app.listen(port, function() {
    console.log('Starting the server at port'  + port );
})

tasks.js

在设置的路由处渲染模板

var express = require('express')
var router = express.Router();
var mongojs = require('mongojs');
var db = mongojs('mongodb://sandy:cookie2080@ds147304.mlab.com:47304/tasklists_21092017', ['tasks'])

router.get('/tasks', function(req, res, next) {
    res.send('api')
    res.render('tasks.html')
    db.tasks.find(function(err, tasks){
        if (err) {
            res.send('error message ' + err)
        }

        res.json(tasks)
    })
})

module.exports = router;

并且,index.js仅供参考

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

router.get('/', function(req, res, next) {
    res.render('index.html')
})

module.exports = router;

在端口 3456 上启动服务器后浏览器出现 404 错误的链接截图

404 error - screenshot

感谢您的帮助。我相信它可以是一个小细节。但是调试起来非常困难。

【问题讨论】:

    标签: mongodb express routes mean-stack


    【解决方案1】:

    出现此错误是因为没有处理端点 /api 的路由。您可以在此处创建一个处理 /api 的中间件。你可以在你的 tasks.js 中这样做:

    tasks.js

    router.get('/', function(req, res, next) {
       res.send('This is api.')
    })
    

    或者,如果您想要将用户从端点 /api 引导到 /api/tasks,那么您可以这样做:

    router.get('/', function(req, res, next) {
       res.redirect('/api/tasks')
    })
    

    希望这会有所帮助。

    【讨论】:

      【解决方案2】:

      我更改了端口号。问题是端口 3000 没有响应请求,因为它仍在被旧进程使用,因此产生警告

      errno: 'EADDRINUSE',.

      刚用5000端口试了一下,顺利通过。

      顺便说一句,我使用的是 vs 代码。

      【讨论】:

      • 你在回答一个完全不同的问题
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-09-02
      • 2023-03-09
      • 2012-03-17
      • 2016-05-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多