0

我在公用文件夹中有一些子文件夹。当我构建这些子文件夹时,它们会放在构建文件夹的根目录中。

public/
  mySubfolder/
  favicon.ico
  index.html
  ...

build/
  mySubfolder/ 
  static/
  favicon.ico
  index.html
  ...

当我使用 express、serve 或 firebase、heroku 将这些文件作为静态文件提供时,现在......我无法通过 url 访问这些子文件夹。示例:如果我将其中一个子文件夹的一个文件放在 iframe 中,我无法访问它,而如果我将路径放在 img 标签的 src 属性中,它可以工作。也许子文件夹与路由冲突,但我没有带有子文件夹名称的路由。

我的项目在 github 上:https ://github.com/Darklod/p5-sketches-react/tree/heroku?files=1 (未更新)

ps 我已经阅读了本指南:https ://github.com/facebookincubator/create-react-app/blob/master/packages/react-scripts/template/README.md#deployment

4

2 回答 2

1

要使用 express 为 React 应用程序提供服务,您需要在配置中使用以下内容:

app.use(express.static(path.join(__dirname, 'react')));

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

在该示例中,替换react为您的 React 应用程序所在的文件夹

遗憾的是,我还没有使用 firebase 或 heroku 来为 React 应用程序提供服务,所以我很遗憾无法帮助你解决这个问题,但我希望 Express 部分能够解决

于 2017-12-25T12:18:35.643 回答
0

已经有一段时间了,我想结束这个问题。所以我试图解决它。

当我尝试它时,我使用的是 react 16.2.0 版本,所以我不知道它是否也适用于最近的版本。

静态文件管理和__dirname值取决于 webpack 和 app 生成器,如 create-react-app。如果您从头开始编写代码,则应该没有任何问题。

然而,在 Marco 的回复中,我以这种方式导入了放置在根文件夹(manifest.json、service-worker.js、index.html ...)中的静态文件:

app.use(express.static(__dirname));
于 2019-08-02T13:50:50.497 回答