Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Express.js路由在docker容器中不起作用_Javascript_Node.js_Docker_Express_Routing - Fatal编程技术网

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