Мне не удалось взять стандартную открытую оболочку razzle-app
(https://github.com/jaredpalmer/razzle)) и заставить ее работать, когда я разверну ее на Google App Engine
. Если у кого-то есть опыт развертывания приложений изоморфного реагирования в GAE,тогда любые входные данные были бы хорошими.
После развертывания он передает html из server.js (он служит только html-текстом для маршрута, но ничего больше - ни приложения, ни каких-либо ресурсов на странице). В качестве подтверждения концепции я возвращал разный html-контент для разных маршрутов, и он, по-видимому, работает, поскольку html-текстовое содержимое и теги заголовков были разными. Однако на сайте нет статических ресурсов (нет изображений, css или js).
Вывод процесса сборки:
razzle build
Creating an optimized production build...
Compiling client...
Compiled client successfully.
Compiling server...
Compiled server successfully.
Compiled successfully.
File sizes after gzip:
48.22 KB build/static/js/bundle.c798792d.js
333 B build/static/css/bundle.659481d8.css
каталог сборки содержит:
> build
> public
> static
> css
> js
> media
> favicon and robots
> static
> media (same one as public/staic)
> assets.json
> server.js
Обратите внимание, что build/static/js
не существует. Он находится внутри build/public/static/js
Это странно? При доступе к сайту (только HTML-текст с сервера) я проверил голову, если пакет клиента был отправлен или нет. Это происходит из неправильного расположения.
<script src="http://localhost:8081/static/js/bundle.js" defer="" crossorigin=""></script>
Мой пакет. JSON выглядитнапример:
{
"name": "my-razzle-app",
"version": "0.1.0",
"license": "MIT",
"scripts": {
"start": "razzle start",
"build": "razzle build",
"test": "razzle test --env=jsdom",
"start:prod": "NODE_ENV=production node build/server.js"
},
"dependencies": {standard
"express": "^4.17.1",
"razzle": "^3.0.0",
"react": "^16.11.0",
"react-dom": "^16.11.0",
"react-router-dom": "^5.1.2"
}
}
Обратите внимание, что GAE запускает запуск npm.
В настоящее время я использую flex, стандарт никогда не работал для меня вообще. app.yaml выглядит так:
env: flex
runtime: nodejs
service: web
Локально работает:
razzle start
WAIT Compiling...
✔ Client
Compiled successfully in 2.14s
✔ Server
Compiled successfully in 153.86ms
ℹ 「wds」: Project is running at http://localhost:3001/
ℹ 「wds」: webpack output is served from undefined
ℹ 「wds」: Content not from webpack is served from /home/anz/Cogi/timecloud-client/my-app
ℹ 「wds」: 404s will fallback to /index.html
✅ Server-side HMR Enabled!
? started
Я могу получить к нему доступ с локального: 3000, а не локального: 3001.