为什么我的节点没有找到路由?

时间:2017-10-21 20:59:38

标签: javascript node.js express routes

我正在尝试添加路线到' /注册'在我的节点快递应用程序。 GET到' /'正在工作,但' /注册'给出404未找到。

index.js和signup.js都在根文件夹中。

signup.hbs和index.hbs都在我的views文件夹中。

index.js:

const express = require('express');
const engines = require('consolidate');
var signup = require('./signup');

const app = express();
app.engine('hbs', engines.handlebars);
app.set('views', './views');
app.set('view engine', 'hbs');

app.get('/', (req, res) => {
    res.render('index');
});

app.use('/signup', signup);

signup.js

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

router.get('/', function (req, res) {
    res.render('signup', {text:"Send some text to template here"});
});

module.exports = router;
index.hbs中的

链接(未找到404的结果):

<a style="font-weight:bold; text-decoration:none;" href="/signup">Sign up</a>

2 个答案:

答案 0 :(得分:0)

node.js中的模块默认为单例,因此不必多次加载模块。 如果要将index.js视为将加载express.js的文件,请考虑导出已定义的express变量并在signup.js中导入index.js.

<强> index.js

const express = require('express');
const app = express();
...
module.exports{
    app
}

<强> signup.js

const index = require('./index');
...
const router = index.app.Router();

此外,似乎您对app.use的使用有点不对劲。您应该提供路由器,快速应用程序或制作自己的中间件,而您只是发送一个模块(signup.js)。您可以在此处详细了解:https://expressjs.com/en/4x/api.html#middleware-callback-function-examples

答案 1 :(得分:-2)

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

 router.post('/', function (req, res) {
   res.render('signup', {OCR:"OCR TEXT"});
 });

module.exports = router;

服务器未找到适当的方法调用,因此它正在发送您的404页面。

您必须在路线上使用POST方法,如果要向服务器发送一些数据