自定义express.js挂载不起作用

时间:2015-12-13 17:16:57

标签: node.js express

我在express.js 4.13.3中实现路由安装时遇到了麻烦。

首次安装时,默认情况下会在app.js

中创建
var users = require('./routes/users');//get the "users" route
app.use('/users', users);//mount to "/users"

users.js路线就像

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

router.get('/', function(req, res) {
  res.send('respond with a resource');
});

module.exports = router;

不需要定义router.get('/users'...,因为在app.js file中挂载会处理这个问题。

但是

当我尝试做同样的事情时

app.js中设置了

var upload = require('./routes/upload');
app.get('/upload', upload);//mounting (?)

upload.js路线

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

router.get('/', function(req, res) {
    res.render('upload', {title: 'Photo upload'});
});

module.exports = router;

当我访问localhost/users时,我收到404错误。解决此问题的唯一方法是在upload.js路由器中定义此router.get('/upload'而不是此router.get('/'。但那不会越来越多。

我看到的差异是默认代码使用app.use('/users', users);,我的代码使用app.get('/upload', upload);。动词(使用/获取)是导致404的唯一区别吗?如果是这样,为什么?还是别的什么?

由于

1 个答案:

答案 0 :(得分:1)

您完全正确的问题是因为这些功能的工作方式不同。以下是这些功能的官方API规范。

https://developers.google.com/drive/android/queries用于安装中间件

app.use用于定义(仅)HTTP GET请求的一个路由

此示例显示安装在/ user /:id路径上的中间件功能。该函数针对/ user /:id路径上的任何类型的HTTP请求执行。

ActionChains(self.driver).move_to_element(self.driver.find_element_by_name('name')).click().perform()

此示例显示了路由及其处理函数(中间件系统)。该函数处理对/ user /:id路径的GET请求。

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/head">
    <html>
        <body>
            <xsl:for-each select="persName[@type='creator']">
                <xsl:text>From </xsl:text>
                <xsl:value-of select="forename"/>
                <xsl:text> to </xsl:text>
                <xsl:value-of select="following-sibling::persName[1]/forename"/>
                <br/>
                <xsl:if test="position() != last()">
                    <xsl:text>and</xsl:text>
                    <br/>
                </xsl:if>
            </xsl:for-each>
        </body>
    </html>
</xsl:template>

</xsl:stylesheet>