Я только что развернул приложение Node.js / React в Google Compute Engine.Моя виртуальная машина работает под управлением Linux Debian 9 с версией Node 10.11.0.Мое приложение React было создано с помощью create-реагировать-приложение.Я также использую response-app-rewired, чтобы добавить загрузчик для одной из моих библиотек.Проблема заключается в том, что при сборке приложения и его развертывании при первой загрузке из любого браузера появляется сообщение об ошибке: Syntax error: Unexpected token <
.При дальнейшей проверке я обнаружил, что это потому, что файл main.js в статической папке (каталог / build) - это мой index.html из статического каталога.Если я обновлю страницу, ошибка исправлена.Затем, если я перехожу в другой браузер (включая еще один браузер Chrome, связанный с другим адресом электронной почты), происходит то же самое.Так что, в основном, когда кто-то пытается загрузить страницу в браузер в первый раз, это происходит через несколько дней после ее развертывания.Потом они обновляются и все работает нормально.У кого-нибудь есть идеи, что может вызвать это?Ниже приведен мой файл package.json и то, как я обслуживаю страницу в моем файле server.js.Я не знаю, какая другая информация имеет отношение, но дайте мне знать, какая другая информация может понадобиться, и я могу добавить ее.Заранее спасибо.
package.json:
{
"name": "client",
"version": "0.1.0",
"private": true,
"dependencies": {
"@material-ui/core": "^1.4.0",
"@material-ui/icons": "^1.1.0",
"@material-ui/lab": "^1.0.0-alpha.8",
"@react-pdf/renderer": "^1.0.0-alpha.14",
"ajv": "^6.5.2",
"axios": "^0.18.0",
"blob-stream": "^0.1.3",
"classnames": "^2.2.6",
"debug": "^3.1.0",
"fs": "0.0.1-security",
"fullcalendar-reactwrapper": "^1.0.7",
"html-react-parser": "^0.4.7",
"joi-browser": "^13.4.0",
"jwt-decode": "^2.2.0",
"moment": "^2.22.2",
"pdfmake": "^0.1.37",
"react": "^16.4.1",
"react-app-rewired": "^1.5.2",
"react-big-calendar": "^0.19.2",
"react-calendar": "^2.16.1",
"react-dom": "^16.4.1",
"react-dropzone": "^4.2.13",
"react-load-script": "0.0.6",
"react-number-format": "^3.5.0",
"react-pdf": "^3.0.5",
"react-redux": "^5.0.7",
"react-responsive": "^4.1.0",
"react-router-dom": "^4.3.1",
"react-scripts": "1.1.4",
"react-signature-pad": "0.0.6",
"react-text-mask": "^5.4.2",
"react-transition-group": "^2.4.0",
"redux": "^4.0.0",
"redux-devtools-extension": "^2.13.5",
"redux-thunk": "^2.3.0",
"socket.io-client": "^2.1.1",
"transform-loader": "^0.2.4",
"twilio-video": "^1.13.0",
"yoga-layout": "github:naminho/yoga-layout-windows"
},
"scripts": {
"start": "react-app-rewired start",
"build": "react-app-rewired build",
"test": "react-app-rewired test --env=jsdom",
"eject": "react-scripts eject"
},
"proxy": "http://localhost:5000"
}
server.js выдержка:
// Serve static assets if in production
if (process.env.NODE_ENV === "production") {
// Set static folder
app.use(express.static("client/build"));
app.get("*", (req, res) => {
res.sendFile(path.resolve(__dirname, "client", "build", "index.html"));
});
}
ОБНОВЛЕНИЕ:
Когда браузер загружает страницу в первый раз, если я проверяю папку js, она имеет неправильное имя для основного файла js.Имя файла всегда main.#####.js
, где #####
- это серия случайных букв и цифр.Последовательность неверна, когда я сравниваю ее с тем, что находится на сервере, но после перезагрузки появляется новое имя файла, соответствующее серверу, и все работает нормально.Интересно, что html-файл, который ошибочно обслуживается по неверному файлу main.#####.js
, содержит ссылку на правильное имя файла main.#####.js
.И опять же, я не говорю, что это происходит по первому требованию.Это происходит каждый раз, когда новый браузер пытается загрузить страницу (Firefox, Chrome, Edge и Safari были протестированы и все ведут себя одинаково).Так как же это происходит через несколько дней после развертывания?