Node.js 在提供静态文件时,这里的问题是什么
文件夹结构Node.js 在提供静态文件时,这里的问题是什么,node.js,express,routes,static-files,Node.js,Express,Routes,Static Files,文件夹结构 const express = require('express'); const path = require('path'); const app = express(); // Use static folder middleware app.use(express.static(path.join(__dirname , "public"))); // Get app.get("/" , (req , res)=>{ r
const express = require('express');
const path = require('path');
const app = express();
// Use static folder middleware
app.use(express.static(path.join(__dirname , "public")));
// Get
app.get("/" , (req , res)=>{
res.sendFile(`${__dirname}/index.html`);
});
// Listen
app.listen(3000 , ()=>{
console.log('server running on port 3000');
});
在index.html页面中,index.css文件和image.png被链接。
然而,在app.js中,这两个文件并不是作为静态文件存储在服务器上。但我已经包括了中间的服务静态文件夹
有人能解释一下问题是什么吗
注册
.bd占位符img{
字体大小:1.125rem;
文本锚定:中间;
-webkit用户选择:无;
-moz用户选择:无;
用户选择:无;
}
@介质(最小宽度:768px){
.bd占位符img lg{
字体大小:3.5rem;
}
}
注册
名字
姓
电子邮件ID
登录
&复制;2020-2021年
这是从引导程序中获取的html页面
此模板的注释自定义样式下的css文件
png在表单标签下面
当html页面在浏览器中独立显示时,文件被正确添加,然后图像和css显示出来
但是,当使用node和express提供服务时,图像和css不会显示更新帖子:
根据@Nav最近给出的关于mime类型错误的评论,下面是我在
“Express文档显示,如果您将
文件名。“
先试试这个例子。如果这不起作用,请重新加载并检查Dev控制台是否存在不同的错误。您的问题可能有多个原因
原职:
根据您提交的代码,我认为您的问题在于默认的CORS策略。您需要合并一种方法,允许在您正在使用的域、端口和协议之间进行跨源资源共享。我发现了一个很好的文档,明确但简洁地详细介绍了CORS,并提供了一个特别适合您需要的解决方案。您可以在浏览器中打开Dev控制台,查找文档中列出的类似错误消息以进行确认
以下是链接:
更新帖子:
根据@Nav最近给出的关于mime类型错误的评论,下面是我在
“Express文档显示,如果您将
文件名。“
先试试这个例子。如果这不起作用,请重新加载并检查Dev控制台是否存在不同的错误。您的问题可能有多个原因
原职:
根据您提交的代码,我认为您的问题在于默认的CORS策略。您需要合并一种方法,允许在您正在使用的域、端口和协议之间进行跨源资源共享。我发现了一个很好的文档,明确但简洁地详细介绍了CORS,并提供了一个特别适合您需要的解决方案。您可以在浏览器中打开Dev控制台,查找文档中列出的类似错误消息以进行确认
以下是链接:
好的,我在这里回答我自己的问题。 在参考@jdmayfield的答案并搜索MIME类型错误后,我找到了这个链接 我意识到,当您在节点中将公用文件夹设置为静态时,则不应将该公用文件夹添加到css或html图像的路径中 意思是 在上面给出的文件夹结构中,如果我们想在html中链接css,我们使用的代码是
var filePath = 'path/to/image.png';
res.contentType(path.basename(filePath));
// Content-Type is now "image/png"
这给了我一个MIME类型的错误。
所以我把上面的代码改为
<link href="./public/css/index.css" rel="stylesheet">
这起作用了
但是,如果您在vscode中独立打开HTML文件,则不会加载css和图像。但是当使用node服务时,它们将被服务。好的,所以我在这里回答我自己的问题。 在参考@jdmayfield的答案并搜索MIME类型错误后,我找到了这个链接 我意识到,当您在节点中将公用文件夹设置为静态时,则不应将该公用文件夹添加到css或html图像的路径中 意思是 在上面给出的文件夹结构中,如果我们想在html中链接css,我们使用的代码是
var filePath = 'path/to/image.png';
res.contentType(path.basename(filePath));
// Content-Type is now "image/png"
这给了我一个MIME类型的错误。
所以我把上面的代码改为
<link href="./public/css/index.css" rel="stylesheet">
这起作用了
但是,如果您在vscode中独立打开HTML文件,则不会加载css和图像。但是当使用node时,它们将被提供。你能显示使用css和png的HTML吗?我已经更新了。请再次检查你显示的css和png使用的HTML?我已经更新。请再次检查引用以应用“”中的样式,因为其MIME类型(“文本/html”)不是受支持的样式表MIME类型,并且已启用严格的MIME检查。-->正在显示此错误,您知道有关此错误的详细信息吗?您使用的浏览器是什么?您是否设置了有关MIME类型的自定义标志?某些浏览器不将文件扩展名与mime类型关联,但要求将Content-type:header显式设置为mime类型。例如,Opera过去因为这一点而臭名昭著,尽管他们现在像其他大多数人一样在铬基上运行,所以这可能不再适用于他们。@Nav I更新了我的答案。我记得我几年前写的一个定制香草服务器也有类似的问题。我使用了一个带有文件扩展名键和mime类型值的数组,如果不匹配,则使用默认值,并在内容类型头中设置它。但是,由于您使用的是Express,因此大部分工作已经包含在内。如果您仍然存在相同的问题,但错误不同,那么您已经成功地克服了第一个原因,并且需要找到第二个原因。我使用chrome浏览器。我对MIME类型一无所知。这是我第一次遇到MIME类型。所以我没有设置任何自定义f