首页 > 解决方案 > MIME 类型 ('text/html') 不受支持

问题描述

这是一些代码行...我正在运行另一个应用程序,它的设置完全相同,我没有任何问题。

app.use('/app', express.static(__dirname + "/public"));

这是链接标签

<link rel="stylesheet" type="text/css" href="/app/css/app.css">

这个 img 标签也是如此

<img src="/app/img/SCS-NewLogo_donl.svg" height="65px" width="350px" id="sc-logo">

我不知道为什么,但它似乎将文件作为 HTML 发送。通常这意味着在服务器上找不到该文件,但我检查了自己并确认它是。

完整文件

const express = require('express');
const config = require('./lib/config');
const bodyParser = require('body-parser');
const URLS = require('./lib/URLS.js');

const PORT = process.env.PORT || 9005;
const ENV = config.ENV || 'TEST';
const SERVER = config.SERVER;
const app = express();

app.set('views', './views');
app.set('view engine', 'ejs');

app.use('/app', express.static(__dirname + "/public"));
app.use(bodyParser.urlencoded({ extended: false }))
app.use(bodyParser.json())

app.all(/^\/apps$/, function (req, res) {
  res.redirect('/apps/job-search');
});

app.get('/apps/job-search', (req, res) => {
  res.render('pages/search');
});

app.post('/apps/job-search/send-input', (req, res) => {

  // Send data to API server which will handle DB query...
  axios.get(URLS.GatherSearchResults)
    .then(resp => {
      console.log(resp.data);
    }).catch(err => {
      console.log(err)
    });
});

app.listen(PORT, () => {
  console.log('App is listening on port ' + PORT + ' on server ' + SERVER + '...');
});

目录结构

Root
  public
     css
     img
  views
     pages
       search.ejs
     partials
       header.ejs
       footer.ejs
   app.js

标签: javascriptnode.jsexpress

解决方案


我想我看到了你的问题。将路由声明/app为静态后,稍后将其重新映射到'/apps/job-search'几行。

将静态行更改为app.use('/', express.static(__dirname + "/public"));HTML 文件中的链接应该以 wit/css等开头/img

通过尝试打开您现有的链接之一并查看您当前提供的内容来验证这一点(我的猜测 - 它会是任何内容'/apps/job-search')。


推荐阅读