gpt4 book ai didi

javascript - Express.js 4 : How to access app. locals. 在routes/index.js 中?

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

我想从app.js 的routes/index.js 文件中访问我自己的变量app.locals.port

app.js:

app.locals.port = 3001;
var index = require('./routes/index');
app.use('*', index); // use router in ./routers/index.js

routes/index.js:

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

console.log('app.locals.port: ' + app.locals.port);

运行npm start时日志中的输出 --> nodemon -e css,ejs,js,json,html,pug ./bin/www:

[nodemon] 1.11.0
[nodemon] to restart at any time, enter `rs`
[nodemon] watching: *.*
[nodemon] starting `node ./bin/www`
app.locals.port: undefined

我当前的解决方法是使用全局:

app.js

global.port = 3001;

routes/index.js

console.log('global.port: ' + global.port);

谢谢。

最佳答案

您需要将应用程序对象传递给routes/index.js。

因此,在您的 app.js 文件中,您可能会包含以下内容:

const express = require('express')

const app = express()
app.locals.port = 3001

const index = require('./routes/index')(app)

app.use('*', index)

app.listen(app.locals.port, function() {
console.log('Server listening on ' + app.locals.port)
})

然后在routes/index.js中:

const express = require('express')

module.exports = function(app) {

const router = express.Router()

router.get('/', function(req, res) {
console.log(app.locals.port)
res.send('Hello from index.js!')
})

return router
}

routes/index.js 中的 app 变量将在 module.exports 函数的范围内可用,然后可以将其传递给文件中的其他函数。

正如您在评论中提到的,应用程序对象附加到每个请求,因此如果您只需要访问路由范围内的应用程序对象,则可以简化代码。

app.js

const express = require('express')

const app = express()
app.locals.port = 3001

const index = require('./routes/index')

app.use('*', index)

app.listen(app.locals.port, function() {
console.log('Server listening on ' + app.locals.port)
})

routes/index.js

const express = require('express')

const router = express.Router()

router.get('/', function(req, res) {
console.log(req.app.locals.port)
res.send('Hello from index.js!')
})

module.exports = router

关于javascript - Express.js 4 : How to access app. locals.<myvar> 在routes/index.js 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43279494/

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