Javascript Express.js路由在docker容器中不起作用
当我使用Javascript Express.js路由在docker容器中不起作用,javascript,node.js,docker,express,routing,Javascript,Node.js,Docker,Express,Routing,当我使用node app.js运行我的Express.js应用程序时,一切都按预期运行,包括以下示例路由: router.get('/config/get', function(req, res, next) { return res.json("hi"); }); 但是,当我构建docker映像并运行它时,我的浏览器会显示此路由上的索引页。事实上,它几乎在每一条路线上都显示了我的索引页,无论我是否设置了它。因此,当我转到/this/route/is/non-existing/时,我也
node app.js
运行我的Express.js应用程序时,一切都按预期运行,包括以下示例路由:
router.get('/config/get', function(req, res, next) {
return res.json("hi");
});
但是,当我构建docker映像并运行它时,我的浏览器会显示此路由上的索引页。事实上,它几乎在每一条路线上都显示了我的索引页,无论我是否设置了它。因此,当我转到/this/route/is/non-existing/
时,我也会看到我的索引页。这只适用于docker。当我在没有docker的情况下运行node应用程序访问此页面时,我得到一个404
请注意,我在vue.js前端使用连接历史api回退。我的app.js如下所示:
require('dotenv').config()
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var history = require('connect-history-api-fallback');
var app = express();
// history mode for making vue.js router work: https://router.vuejs.org/guide/essentials/history-mode.html
app.use(history());
history({
index: '/dist/index.html'
});
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use('/', indexRouter);
// serving vue.js prod build
app.use(express.static('dist'));
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
app.listen(process.env.PORT, () => console.log(`${process.env.NAME} listening on port ${process.env.PORT}!`))
这是我的Dockerfile:
FROM node:10
# Create app directory
WORKDIR /usr/src/app
# use non-root user to run commands and give him chown permissions for the directory
USER node
COPY --chown=node:node ./backend .
EXPOSE 8080
CMD [ "node", "app.js" ]
你的
/config/get
路线在哪里,是在索引中还是在用户中?@MuhammadAli index