Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不在模块化结构中工作的路由_Javascript_Node.js_Express - Fatal编程技术网

Javascript 不在模块化结构中工作的路由

Javascript 不在模块化结构中工作的路由,javascript,node.js,express,Javascript,Node.js,Express,我已经为我的mean应用程序准备了这些结构,但现在让我们关注快速路由,以下是我的结构: ├── node_modules ├── src │ ├── client │ │ └── ... //Frontend things managed by angular (like views, etc...) │ └── server │ ├── modules //By module i mean an entity | | ├── auth |

我已经为我的mean应用程序准备了这些结构,但现在让我们关注快速路由,以下是我的结构:

├── node_modules
├── src
│   ├── client
│   │   └── ... //Frontend things managed by angular (like views, etc...)
│   └── server
│       ├── modules //By module i mean an entity
|       |   ├── auth
|       |   |   ├── users.model.js
|       |   |   ├── signin.controller.js
|       |   |   └── index.js
|       |   └── ...
|       ├── config
|       └── ...
|
├── package.json
└── server.js
这是我的server.js

/* main module entry point */
'use strict';

var Express = require('express');

var env = require('./src/server/components/config/env');
var db = require('./src/server/components/config/db');

var app = module.exports = Express();

app.use( 'usuario', require( './src/server/modules/auth' )() );

app.listen(env.port, function () {

    console.log('Listening to port ' + env.port);

});
 module.exports = function () {

    var express = require('express'),
        router = express.Router(),
        signin = require('./signin.controller');

    router.route( '/iniciar-sesion' )
        .get( signin.get )
        .post( signin.post );

    return router;

 };
module.exports = function() {

    function  get( req, res ) {

        console.log('Sign In');

    }

    function  post( req, res ) {

        console.log('Sign In');

    }

    return {
        get: get,
        post: post
    }

}();
这是我的auth/index.js

/* main module entry point */
'use strict';

var Express = require('express');

var env = require('./src/server/components/config/env');
var db = require('./src/server/components/config/db');

var app = module.exports = Express();

app.use( 'usuario', require( './src/server/modules/auth' )() );

app.listen(env.port, function () {

    console.log('Listening to port ' + env.port);

});
 module.exports = function () {

    var express = require('express'),
        router = express.Router(),
        signin = require('./signin.controller');

    router.route( '/iniciar-sesion' )
        .get( signin.get )
        .post( signin.post );

    return router;

 };
module.exports = function() {

    function  get( req, res ) {

        console.log('Sign In');

    }

    function  post( req, res ) {

        console.log('Sign In');

    }

    return {
        get: get,
        post: post
    }

}();
这是我的auth/sign.controller.js

/* main module entry point */
'use strict';

var Express = require('express');

var env = require('./src/server/components/config/env');
var db = require('./src/server/components/config/db');

var app = module.exports = Express();

app.use( 'usuario', require( './src/server/modules/auth' )() );

app.listen(env.port, function () {

    console.log('Listening to port ' + env.port);

});
 module.exports = function () {

    var express = require('express'),
        router = express.Router(),
        signin = require('./signin.controller');

    router.route( '/iniciar-sesion' )
        .get( signin.get )
        .post( signin.post );

    return router;

 };
module.exports = function() {

    function  get( req, res ) {

        console.log('Sign In');

    }

    function  post( req, res ) {

        console.log('Sign In');

    }

    return {
        get: get,
        post: post
    }

}();
当我访问时,会收到如下消息:

module.exports = (function () {

    var express = require('express'),
        router = express.Router(),
        signin = require('./signin.controller');

    router.route( '/iniciar-sesion' )
        .get( signin.get )
        .post( signin.post );

    return router;

 })();
无法获取/usuario/iniciar session

控制台上没有任何内容,如果在auth/index.jsfunc末尾使用()也会导致服务器无法启动:

module.exports = function () {

    var express = require('express'),
        router = express.Router(),
        signin = require('./signin.controller');

    router.route( '/iniciar-sesion' )
        .get( signin.get )
        .post( signin.post );

    return router;

 }();
调试('分派%s%s',请求方法,请求url)

TypeError:无法读取未定义的属性“method”


我遗漏了什么?

如评论中所述,这里的问题在于您提供给
应用程序的路由。use()
方法需要在前面加一个“/”-这是将域名与URL的路由部分分离所必需的

像这样:

app.use( '/usuario', require( './src/server/modules/auth' )() );
此外,此代码失败的原因:

module.exports = function () {

    var express = require('express'),
        router = express.Router(),
        signin = require('./signin.controller');

    router.route( '/iniciar-sesion' )
        .get( signin.get )
        .post( signin.post );

    return router;

 }();
因为这是一个语法错误。如果希望函数是自调用的,则需要将其括在括号中,如下所示:

module.exports = (function () {

    var express = require('express'),
        router = express.Router(),
        signin = require('./signin.controller');

    router.route( '/iniciar-sesion' )
        .get( signin.get )
        .post( signin.post );

    return router;

 })();
还应注意,如果使用自调用函数,则需要从
应用程序中的
require()
方法中删除括号

app.use( 'usuario', require( './src/server/modules/auth' ) );

很高兴您找到了解决方案:)

读取
app.use('usuario',require('./src/server/modules/auth')())的代码行-该url指向auth文件夹,您是否尝试直接指向单个.js文件?另外,确保在路由名称前加上/,如:
app.use('usuario',require('./src/server/modules/auth/index')()'./src/server/modules/auth/index'
,这是有效的:
app.use('/usuario',require('./src/server/modules/auth')()太好了,所以问题解决了?你可能想回答你自己的问题:)嗯,是的,问题解决了,但我也想知道为什么在func auth/index.js的末尾使用
()
会出现错误,也许你应该回答,所以我接受你的答案:)Thnks,你能解释一下自调用函数和其他函数之间的区别吗?它们被调用了什么?区别在于调用函数的时间和方式。自调用函数调用它们自己,因此它们可以保持匿名性并一次性返回值。括号只是实现这一点的语法,其他任何东西都只是需要不同语法的标准函数。嗯,所以在本例中,使用括号中的任何一个都不会有任何困难,对吗?两者都很好:)不过为了简单起见,我不会使用自调用匿名函数