2017-10-21 128 views
0

我想在我的节点快递应用中添加一个路由到'/注册'。 GET到'/'正在工作,但'/注册'给出404未找到。为什么我的节点没有找到路由?

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

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

index.js:在index.hbs

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; 

链接(404结果未找到):

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

在声明'if(err){throw err;}之后,已经尝试在'function'内添加'res.render'。 }'并在结束后'if throw err'执行'res.render'? – Gabriel

回答

-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方法,如果您是在node.js中发送一些数据到服务器

+1

我实际上并没有在这个请求上发送任何数据。我只是想做一个GET请求来把用户带到注册页面。我假设执行GET请求。 – Feyman81

+0

正常链接**会触发GET请求。 – Quentin

0

模块都会默认单身,因此加载模块不止一次是不必要的。 如果您想将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

+0

以前我的index.js结尾是:'exports.app = functions.https.onRequest(app);'。如上所述,我尝试使用module.exports进行修改,但是index.app.Router返回“无法读取未定义的属性路由器”。 – Feyman81

+0

我刚刚检查过,没有渲染视图,你的路由工作得很好(我只是发送了一些对象)。因此,问题可能在于定位视图。假设'view'文件夹位于根文件夹中,你可以试试这个:'app.set('views',path.join(__ dirname,'views'));' 祝你好运! – alrodseg