【问题标题】:pass arguments to function exported node将参数传递给函数导出节点
【发布时间】:2016-08-07 10:14:02
【问题描述】:

routes.js

var categories = require('../controllers/categories.server.controller');

module.exports = function(app) {

app.get('/',function(request,response){
        return response.send("Welcome");
    });

    app.route('/')
        .get(function(request, response) {
            return response.send('Rayees');
        });
        .post(categories.create);

    app.route('/:categoryId')
        .get(categories.read)
        .put(categories.update)
        .delete(categories.delete)

    app.param('categoryId', categories.categoryId)

};

app.js 文件

'use strict'

var express = require('express');

var path = require('path');

var favicon = require('serve-favicon');

var logger = require('morgan');

var cookieParser = require('cookie-parser');

var bodyParser = require('body-parser');

var app = express(),

    mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/pressworld');

var category = require('./server/routes/category.server.routes')(app);

app.use(logger('dev'));

app.use(bodyParser.json());

app.use(bodyParser.urlencoded({
    extended: false
}));

app.use(cookieParser());

app.use('/api/category', category);

我收到此错误

TypeError: Router.use() requires middleware function but got a undefined
    at Function.use (D:\Development\reduxpress\node_modules\express\lib\router\index.js:458:13)
    at EventEmitter.<anonymous> (D:\Development\reduxpress\node_modules\express\lib\application.js:219:21)
    at Array.forEach (native)
    at EventEmitter.use (D:\Development\reduxpress\node_modules\express\lib\application.js:216:7)
    at Object.<anonymous> (D:\Development\reduxpress\app.js:49:5)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)
    at Object.<anonymous> (D:\Development\reduxpress\bin\www:7:11)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)

【问题讨论】:

  • at Object.&lt;anonymous&gt; (D:\Development\reduxpress\app.js:49:5) 您没有显示完整的app.js49 行中的任何内容都会导致错误。
  • 你的app.js中有没有下面这行require('your route.js path')(app)
  • 我正在从 aap.js 导出应用程序 module.exports = app;并要求 www var app = require('../app');

标签: javascript node.js express mean-stack meanjs


【解决方案1】:

利用 express.Router 并返回路由器 obj 并在 express 中间件中使用它。

请修改你的 routes.js 并使用 router.get , router.post 而不是 app。

module.exports = function(app) {

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


    router.get('/',function(request,response){
        return response.send("Welcome");
    });

    return router;

};

【讨论】:

猜你喜欢
  • 2018-01-15
  • 2017-08-13
  • 2018-03-28
  • 2015-02-26
  • 2011-07-19
  • 2013-01-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多