gpt4 book ai didi

javascript - 无法从 ./app.js 加载 ./src/routes/index.js 中的路由

转载 作者:行者123 更新时间:2023-12-03 09:28:11 25 4
gpt4 key购买 nike

这里对 Nodejs 非常陌生。我尝试将路由放入 app.js 中,没有出现问题。但是,将所有路由移动到 PROJECT_DIR/src/routes/index.js 下的单独文件后,然后我在浏览器中打开页面,它显示“无法获取 /wines” >”。以下是 app.jssrc/routes/index.js 中的代码:

// app.js
var express = require('express');
var app = express();
var path = require('path');

global.app = express();
require('./src/routes/index');
// also tried: require(path.join(__dirname, './src/routes/index'));

global.server = app.listen(3000, '0.0.0.0', function () {
var host = server.address().address;
var port = server.address().port;

console.log('Example app listening at http://%s:%s', host, port);
});
// ./src/routes/index.js
// tried console.error(app); and it printed all the stuff about app in the server log
app.get('/wines', function(req, res) {
res.send([{name:'w1'}, {name:'w2'}]);
});

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

我确信我错过了一些东西。如有任何帮助,我们将不胜感激!

最佳答案

问题

老实说,我不确定为什么你所做的事情不起作用。

该文件可以找到,否则 Node 会抛出错误,并且您可以从路由文件访问 app 意味着 app 可以访问。

怀疑可能是由于 garbage collection -- 因为您不持有对该模块的引用,所以它可能会被抢先销毁。

此外,Express 中有一个名为 router 的构造。 可能就是为了这个目的而存在的。

解决方案

虽然我不确定问题所在,但我确信解决方案 - 使用路由器,如下所示:

var express = require('express');

var router = express.Router();

router.get('/wines', function(req, res) {
res.send([{name:'w1'}, {name:'w2'}]);
});

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

module.exports = router;

然后在您的 app.js 文件中执行以下操作:

var routes = require('./routes/index');
app.use('/', routes);

路由器的另一个好处是您不必再污染全局对象..

关于javascript - 无法从 ./app.js 加载 ./src/routes/index.js 中的路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31597857/

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