首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试使用NodeJS加载本地文件时收到404状态

尝试使用NodeJS加载本地文件时收到404状态
EN

Stack Overflow用户
提问于 2019-11-23 06:45:05
回答 2查看 483关注 0票数 0

我是使用Node的新手,我正在尝试制作一个简单的HTML页面,它可以在本地获取图像、样式表和脚本。每次我尝试加载本地文件时,它都会返回404状态。我尝试了StackOverflow和其他来源的多种解决方案,但仍然不能正常工作。

下面是我在app.js中的代码:

代码语言:javascript
运行
复制
const app = require('express')();
const http = require('http').createServer(app);

var portNumber = 8085;

app.get('/', function(reg, res) {
  res.sendFile(__dirname + '/index.html');
});

http.listen(portNumber, function() {
  console.log('Listening on port ' + portNumber);
});

我在public > stylesheets > style.css中有一个CSS文件链接到我的HTML文档。

<link rel="stylesheet" type="text/css" href="public/stylesheets/style.css" />

我在浏览器的控制台中得到了一个404错误。我还收到了一个MIME错误:来自“http://localhost:8085/public/stylesheets/style.css”的资源由于MIME类型(“文本/html”)不匹配(X-Content- type -Options: nosniff)而被阻塞。

我试图加载的任何本地图像也会给出一个404错误。

我曾尝试添加app.use(express.static('public'));以使公共文件夹成为提供静态内容的根目录,如Express documentation所示,但我仍然收到了404个错误。

代码语言:javascript
运行
复制
const express = require('express');
const app = express();
const http = require('http').createServer(app);

var portNumber = 8085;

app.use(express.static('public'));

app.get('/', function(reg, res) {
  res.sendFile(__dirname + '/index.html');
});

http.listen(portNumber, function() {
  console.log('Listening on port ' + portNumber);
});

我不知道我应该做什么。我想要的是能够在我的HTML文档中加载本地文件。如何让这些文件公开显示,而不是给出404错误?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-23 08:17:10

mime错误的原因实际上是令人困惑的-它是由于浏览器无法找到该文件。

删除路径位置的/public部分,因为它是文件夹,因此它是从以下位置提供的:

代码语言:javascript
运行
复制
<link rel="stylesheet" type="text/css" href="/stylesheets/style.css" />

对于所有其他静态文件也是如此:/assets/mypic.png

按如下方式更新静态路径的位置:

代码语言:javascript
运行
复制
app.use(express.static(path.join(__dirname, 'public'), {index: false}));

然后,将sendFile更新为use和absolute路径,如下所示:

代码语言:javascript
运行
复制
return res.sendfile(path.resolve('./index.html'));
// or
return res.sendfile(path.join(__dirname, 'index.html'));
票数 1
EN

Stack Overflow用户

发布于 2019-11-23 08:09:19

您应该尝试使用

代码语言:javascript
运行
复制
app.use(express.static(__dirname + "/public"));

这样express就知道在哪里搜索public文件夹。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59002726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档