如何在Koa中投放构建文件夹?

时间:2019-02-12 15:30:44

标签: reactjs heroku deployment koa

我已经编写了简单的todo-app,并且正在尝试将其部署到Heroku。 我以前在heroku上部署过,所以我使用了 Express + React 。在我的server.js文件中,有一段代码:

if (process.env.NODE_ENV === 'production') {
    app.use(express.static('client/build'));
    app.get('*', (req, res) => {
        res.sendFile(path.resolve(__dirname, 'client', 'build', 'index.html'));
    });
}

如果应用正在生产中,那么这段代码将服务于“ build”文件夹,并且还会向每个请求发送“ index.html”。

我需要类似的代码,但要使用 Koa + React 。 Koa是一个非常简约的框架,所以我想必须安装其他软件包,我不知道哪个软件包。 我尝试了 koa-send koa-static ,但是无法配置它们。 我该怎么办?

1 个答案:

答案 0 :(得分:0)

我目前无法对此进行测试,但我认为它会像这样:

const Koa = require('koa');
const Router = require('koa-router');
const send = require('koa-send');
const static = require('koa-static');

const app = new Koa();
const router = new Router();

if (process.env.NODE_ENV === 'production') {
  app.use(static('./client/build'));

  router.get('*', async (ctx, next) => {
    try {
      await send(ctx, './client/build/index.html');
    } catch(err) {
      // TODO: handle err?
      return next();
    }
  });
}

app.listen(3000);