本地 CSS 或 JS 的 MIME 类型错误阻止在使用 NodeJs 时加载自定义样式

MIME type error for local CSS or JS prevents loading custom styles when working with NodeJs

我整个星期都在为这个错误绞尽脑汁! 我的计划是创建一个简单的 'send email from nodejs' 应用程序。我 运行 遇到的问题是 mime 类型的错误 我的 style.css。错误说它是 text/html 格式。 我像往常一样从 'npm init -y' 和 'npm install express nodemailer nodemailer-mailgun-transport -S' 开始。 我还创建了 'server.js'、'index.html' 和 'style.css'(请参见下面的代码)。 就是这样。该应用程序按预期工作,linking bootstrap cdn 也可以工作。只是我的习惯css让我很为难。所以为了简化它,我什至从 w3schools

中拿了一个 copy/paste html 模板

index.html

<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" type="text/css" href="style.css" />
  </head>
  <body> 
    <h1>This is a heading</h1>
    <p>This is a paragraph.</p>
  </body>
</html>

style.css

body {
  background-color: powderblue;
}
h1 {
  color: blue;
}
p {
  color: red;
}

server.js

const express = require('express');
const app = express();
const PORT = 8080;
const path = require('path');

app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'views', 'index.html'));
})

app.listen(PORT);

package.json

{
  "name": "SendMail",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "express": "^4.17.1",
    "nodemailer": "^6.4.15",
    "nodemailer-mailgun-transport": "^2.0.1"
  },
  "style": "style.css"
}

Chrome中的错误:

我尝试过的:

编辑:内联样式和 JS 按预期工作。估计跟express有关系。

还有什么我可以尝试的吗? 如果您需要其他信息,请告诉我。提前致谢!

提供静态文件(如图像、css 等)时,通常最好将这些文件放在名为 public 或 static 或任何您喜欢的专用目录中。然后你需要明确地告诉你的快递应用程序从那里提供文件,如下所示:

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

所以你的 server.js 变成:

const express = require('express');
const app = express();
const PORT = 8080;
const path = require('path');

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

app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'views', 'index.html'));
})

app.listen(PORT);

然后你可以在 index.html:

中这样调用你的 CSS 文件
<!DOCTYPE html>
<html>
  <head>
    <link rel="stylesheet" type="text/css" href="public/style.css" />
  </head>
  <body> 
    <h1>This is a heading</h1>
    <p>This is a paragraph.</p>
  </body>
</html>

晚上好)只需将 html/css 的文件夹设为 public。

const express = require('express');
const app = express();
const PORT = 3000;
const path = require('path');

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

app.get('/', (req, res) => {
  res.sendFile(path.join(__dirname, 'views', 'index.html'));
})

app.listen(PORT);