Я создал многостраничное приложение ReactJs, используя следующий набор инструментов:
- Пряжа (менеджер пакетов)
- Webpack (Bundler)
- Babel (Компилятор)
После развертывания в Gcloud работает только целевая страница. Каждая другая страница показывает эту ошибку:
Не найдено
Мой app.yaml выглядит так
runtime: nodejs
env: flex
handlers:
- url: /
static_files: dist/index.html
upload: dist/index.html
- url: /(.*)
static_files: dist/index.html
upload: dist/index.html
сценарии в package.json
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "NODE_ENV=production webpack --progress && NODE_ENV=production node server.js",
"dev": "webpack-dev-server --mode development",
"build": "webpack --mode production"
}
server.js выглядит так
'use strict';
const port = process.env.PORT || 3000;
const Koa = require('koa');
const serve = require('koa-static');
const convert = require('koa-convert');
const app = new Koa();
const _use = app.use;
app.use = (x) => _use.call(app, convert(x));
app.use(serve('./dist'));
const server = app.listen(port, function () {
let host = server.address().address;
let port = server.address().port;
console.log('listening at http://%s:%s', host, port);
});
app.js с маршрутизатором
render() {
return (
<Router history={browserHistory}>
<Switch>
<Route exact path="/" component={LandingPage} />
<Route path="/about" component={AboutUsPage} />
</Switch>
</Router>
);
}
Я попытался изменить обработчики в app.yaml и также попытался изменить server.js, но ничего не работает. Мы будем благодарны за любую помощь.
Примечание: приложение отлично работает в моей локальной среде.