【问题标题】:Node.js routes not working node.js + express serverNode.js 路由不起作用 node.js + express 服务器
【发布时间】:2017-04-29 18:56:43
【问题描述】:

我的服务器上运行了一个 node.js express 服务器。我最近迁移到了一个新服务器,不知何故以前的代码已经停止工作。

这是我的服务器的设置

var fs = require('fs');
var express = require('express');
var routes = require('./routes');
var https = require('http');
var path = require('path');
var socketio = require('socket.io');
var util = require('util');
var url = require('url');
var HashMap = require('hashmap').HashMap;
var sizeOf = require('image-size');
var DBWrapper = require('node-dbi').DBWrapper; 
var DBExpr = require('node-dbi').DBExpr; 
var dbConnectionConfig = { host: 'localhost', user: 'mps', password: 'password', database: 'mps_schools' };
dbWrapper = new DBWrapper( "pg", dbConnectionConfig );
dbWrapper.connect();

var app = express();

app.set('port', process.env.PORT || 3001);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, 'public')));


app.get('/', routes.index);

在这一行代码被破坏了

app.get('/', routes.index);

在将“routes.index”记录到控制台时,我得到“未定义”

这是错误日志:

/home/mps/node_modules/express/lib/router/index.js:291
throw new Error(msg);
      ^
Error: .get() requires callback functions but got a [object Undefined]
at /home/mps/node_modules/express/lib/router/index.js:291:11
at Array.forEach (native)
at Router.route (/home/mps/node_modules/express/lib/router/index.js:287:13)
at Router.(anonymous function) [as get] (/home/mps/node_modules/express/lib/router/index.js:318:16)
at Function.app.(anonymous function) [as get] (/home/mps/node_modules/express/lib/application.js:412:26)
at Object.<anonymous> (/home/mps/app22.js:62:5)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)

我做错了什么?谢谢

【问题讨论】:

  • 不可能,但很明显 routes 导入失败。可以是任何东西,但我会确保你的环境是“相同的”,你的构建过程是完整的,等等。
  • 同意@DaveNewton。您的导入 (require('./routes');) 失败。贴出 routes.js 的代码和你的项目路径结构。否则很难提供更多帮助。
  • 会不会是版本不同?

标签: javascript node.js express routes fs


【解决方案1】:

我让它工作了。我将以下内容更改为导入

var routes = require('./routes');

var routes = require('./routes/index');

从 app.get 我改变了

app.get('/', routes.index);

app.get('/', routes);

【讨论】:

    【解决方案2】:

    嗨,这可能看起来很愚蠢,但我没有在 sn-p 中看到它。你确定你已经添加了 'app.listen(PORT);' 否则你可能会添加你的包配置,那里可能有一些东西。 一般是环境变化。你以前在什么系统上,你现在在什么系统上托管。 希望这能说明一点。

    【讨论】:

    • listen 不会解决 require 失败的问题。
    猜你喜欢
    • 2014-05-16
    • 2017-06-14
    • 2012-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多