我的Express服务器在处理请求时停止执行console.log
在此类问题上,通常建议在路由之前使用app.use(express.static(srPath))进行公告,此建议应得到遵守。 我对静态有问题,当我在这一行中评论时,日志记录开始起作用。我不知道为什么会这样 快速版本:一直使用“ ^ 4.16.4” 回购:https://gitlab.com/igor_borisch/react-redux-node-app
var express = require('express');
var bodyParser = require('body-parser');
var path = require('path');
var axios = require ('axios');
var app = express();
var srcPath = path.join(__dirname, './public');
app.use(express.static(srcPath));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.get('/', (req, res) => {
console.log(srcPath);
res.sendFile('./index.html', {root: srcPath});
});
app.get('/get-currencies', (req,res) => {
axios.get('https://api.exchangeratesapi.io/latest?base=RUB')
.then(function (response) {
console.log(response.data);
res.send(JSON.stringify(response.data));
});
});
app.listen(3001, () => console.log('app listen on port 3001'));
答案 0 :(得分:0)
我解决了以下问题,express支持中间处理程序,该回调函数的参数中的中间处理程序具有3个pfrfmeter:req,res,next。据我了解,您不需要定义下一个,而express会自动找到您使用的路由的下一个处理程序并执行它。 首先放置中间处理程序非常重要。我尝试写类似:
app.use('/',(req,res,next) => {express.static(srcPath)})
但它不起作用,可能是因为express.static方法是外部模块serve-static的包装
我下面的示例正常工作
var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');
var path = require('path');
var axios = require ('axios');
var app = express();
var srcPath = path.join(__dirname, '../public');
app.get('/',(req,res,next) => { //here just add next parameter
console.log('login');
next();
})
app.use('/',express.static(srcPath));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
app.get('/get-currencies', (req,res) => {
console.log('alo')
axios.get('http://yandex.ru/')
.then(function (response) {
console.log('recieve response');
res.send(response.data);
})
.catch((error) => {
res.send(error);
});
}
);
app.listen(3001, () => console.log('app listening on port 3001'));