首页 > 解决方案 > 是否可以在不弹出的情况下配置 create-react-app express.static 选项?

问题描述

默认情况下,当存在空文件夹时,express.static会触发301添加正斜杠的重定向。

这就是我为自定义Express服务器禁用此重定向的方式。

server.use(
  express.static(path.join(__dirname, "build"), {
    redirect: false,
  })
)

在开发模式下redirect: false使用create-react-app时是否可以配置( npm start

看看下面的标题,我猜 Express 是create-react-app用来在开发模式下为SPA服务的。

加载http://localhost:3001/privacy-guides时的请求标头

HTTP/1.1 301 Moved Permanently
X-Powered-By: Express
Content-Type: text/html; charset=UTF-8
Content-Length: 195
Content-Security-Policy: default-src 'none'
X-Content-Type-Options: nosniff
Location: /privacy-guides/
Vary: Accept-Encoding

标签: reactjsexpress

解决方案


简短的回答,不。

正如@goto1 指出的那样,以下不是好的做法,但帮助我了解了 CRA 的幕后工作原理。

当使用 以开发模式运行 CRA 时npm startwebpack-dev-server用于为应用程序提供服务。Webpack DevServer 使用 Express 来提供文件,这解释了为什么浏览到文件夹会触发301重定向(参见express.static options.redirect,默认为true)。

当路径名是目录时,重定向到结尾的“/”。

我确认添加以下内容以node_modules/react-scripts/config/webpackDevServer.config.js禁用重定向。

staticOptions: {
  redirect: false
}

手动编辑此文件有点麻烦,但可以。不幸的是,我能找到的唯一合法配置方法staticOptions需要弹出.


推荐阅读