[英]app.set and then TypeError: app.get is not a function
使用express 4.x時,我在我的server.js中設置端口,如下所示。
var express = require('express');
var app = express();
...
var port = process.env.PORT || 8080;
app.set('port', port);
...
module.exports = app;
但是當我嘗試在我的路線文件中訪問它時,如下所示......
// path to routes file is app/models, hence the '../../'
var app = require('../../server');
// default route
router.get('/', function (req, res) {
res.send('Hello! The API is at http://localhost:' + app.get('port') + '/api');
});
...我收到以下錯誤。
TypeError: app.get is not a function
到底是怎么回事?
好的,我終於明白了。 app
未在routes文件中正確設置,因為我們以前在require('./app/models/routes');
之后執行module.exports = app
require('./app/models/routes');
在server.js內。 因此,只要我將應用程序的導出移動到需要路由文件之前......一切正常!
我不確切知道發生了什么,我不知道你是否想要這個解決方案。 我曾遇到類似的問題。
在主文件中我做了類似的事情
var express = require('express');
var app = express();
....
var routes = require("./routes/path")
routes(app);
在路線我做了類似的事情
在你有“./routes/path”文件的地方:
module.exports = function(app){
//I got access to app.locals
}
你看我通過了快遞應用程序。
基本上路由是一個將app作為參數的函數。
我試過app.set(“應用程序”,應用程序),我認為這不起作用。
看起來app沒有被定義。 你也可以試試這樣的東西。
router.get('/', function (req, res) {
var app =req.app.get("app")
res.send('Hello! The API is at http://localhost:' + app.get("port") + '/api');
});
在GET,POST等的路由處理中,您應該接收'req'依賴項。 應該附加應用程序,所以只需參考req.app:
router.get('/',function(req,res,next){
console.log(app.get('secret'));
}
不需要聲明。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.