gpt4 book ai didi

express - 无法将app.local获取到路由文件

转载 作者:行者123 更新时间:2023-12-04 04:34:21 25 4
gpt4 key购买 nike

因此,在我的express.js 4.13.3中。 ,在app.js文件中,我设置了app.local var
app.set('multimedia', __dirname + '/public/multimedia');
然后在routes/settings.js中,我尝试像

var app = require('../app');
var dir = app.get('multimedia');

我得到 app.get is not a function

我也尝试了 var dir = app.get.multimedia;var dir = app.locals('multimedia');以及 var dir = app.locals.multimedia;,仍然没有。

我在这里想念什么?

谢谢

最佳答案

问题是您尚未定义调用required('../app')时的操作。您应该使用module.exports进行此操作,如下所示。请尝试这些方法之一来解决此问题。

方法1:

将此行添加到app.js文件。

module.exports = app;

这只是说只要调用 app即可导出 require('../app')。如果在 require('routes/settings');中使用 app.js,则此行应放在 require('routes/settings');之前,否则它将不起作用。

方法2:
//change the `routes/settings.js` like this
module.exports = function (app) {//notice that you pass the app to this
//............
var dir = app.get('multimedia');
console.log(dir);
//............
}

将此行添加到 app.js
require('routes/settings')(app);

现在,您应该可以使用app.get()了,没有任何问题。

示例:
//app.js
var express=require('express');

var app = express();

app.set('multimedia', __dirname + '/public/multimedia');

app.get('/',function(req,res){
res.send('Hello World!');
});

var server = app.listen(3000, function () {
var host = server.address().address;
var port = server.address().port;
console.log('Listening at http://%s:%s', host, port);
});

module.exports=app;

require('./settings');



//settings.js
var app= require('./app');

var dir = app.get('multimedia');

console.log(dir);

可以在 here中找到有关module.exports的更多详细信息

关于express - 无法将app.local获取到路由文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34254744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com