reactjs:提供到公共文件夹的文件在生产构建中解析为 404 错误,但在开发中使用 npm start

Posted

技术标签:

【中文标题】reactjs:提供到公共文件夹的文件在生产构建中解析为 404 错误,但在开发中使用 npm start【英文标题】:reactjs: files served into public folder resolve into a 404 error in production build but work in development with npm start 【发布时间】:2021-03-25 09:04:13 【问题描述】:

我正在尝试为 web 程序包提供 javascript 所需的 2 个文件。文件 example.wasm 和 example.data 位于 react js 项目文件结构中的 public 文件夹中。在使用 npm start 与开发服务器一起运行时,项目可以找到文件并且可以正确读取这些文件。构建项目时,文件按预期最终位于项目的根目录中。尽管使用文件的当前 PUBLIC_URL 路径,但无法找到文件,但 Web 控制台中的路径似乎是正确的。

我从 IIS 7 托管 reactjs 应用程序。

您能帮我解决上述问题的调试过程吗?

提前感谢您的帮助。

【问题讨论】:

docs.microsoft.com/en-us/iis/troubleshoot/… @LexLi 非常感谢您的回答,通过启用失败的请求跟踪,我在 IIS 生成的日志中发现了以下错误:当我的应用程序请求文件时,SECURITY_DENIED_BY_MIMEMAP。我在 IIS 配置中添加了 mime 类型的 .wasm 和 .data 文件。我猜它们并不常见,也没有添加到默认配置中。 您可以发布自己的答案并接受它。 FRT 非常好用,以后可以用在其他场景中。 您的问题解决了吗?如果解决了,请分享你的答案,以便帮助更多遇到此问题的人。 【参考方案1】:

在@LexLi 的帮助下,我按照此文档在 IIS 中启用了失败的请求跟踪模块:

[https://docs.microsoft.com/en-us/iis/troubleshoot/using-failed-request-tracing/troubleshooting-failed-requests-using-tracing-in-iis][1]

阅读失败请求跟踪模块生成的日志,我看到当从服务器请求文件 example.wasm 和 example.data 时,实际错误不是 404 Not Found,而是:

SECURITY_DENIED_BY_MIMEMAP

在谷歌搜索上述错误后,我意识到在 IIS 中配置的默认 MIME 类型不包括扩展名为 .data 和 .wasm 的文件。使用 IIS 管理中 Web 服务器级别中的 MIME 类型模块将这些 MIME 类型添加到 IIS 配置并重新启动服务器后,问题得到解决。

【讨论】:

以上是关于reactjs:提供到公共文件夹的文件在生产构建中解析为 404 错误,但在开发中使用 npm start的主要内容,如果未能解决你的问题,请参考以下文章

Next.js 公共图像未在生产构建中显示

构建文件的 ReactJS 资源路径

将 ReactJS 构建/编译/部署到生产环境的最佳方法 [关闭]

在Reactjs应用程序页面重新加载或刷新期间在生产服务器上出现404错误。

在 Express 中将 ReactJS 生产构建部署为 HTTPS

如何为 electron + react js + next 进行生产构建