簡體   English   中英

app.set然后TypeError:app.get不是一個函數

[英]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');
});

https://stackoverflow.com/a/15018006/1893672

在GET,POST等的路由處理中,您應該接收'req'依賴項。 應該附加應用程序,所以只需參考req.app:

router.get('/',function(req,res,next){
    console.log(app.get('secret'));
}

不需要聲明。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM