#javascript #node.js #reactjs #heroku
Вопрос:
Как получить доступ к папке сборки в React из узла для развертывания Heroku? Я получаю ошибки, и я почти на 100% уверен, что просто не использую правильный путь.
Я думал использовать стандартную навигацию по пути ../
, но это, похоже, неверное предположение.
Иерархия файлов:
Project Folder
|
|___Backend-Folder
| |
| |___App.js
|
|___Frontend-Folder
|
|___build
App.js (сервер):
if (process.enn.NODE_ENV === 'production') {
app.use(express.static(path.resolve(__dirname, "../Frontend-Folder/build")));
app.get("*", function (request, response) {
response.sendFile(path.resolve(__dirname, "../Frontend-Folder/build", "index.html"));
});
}
Файл сборки Package.json:
"heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix ../Frontend-Folder amp;amp; npm run build --prefix ../Frontend-Folder"
В учебниках, над которыми я работал, файлы сервера и сборки находятся в одной и той же основной папке, поэтому им не нужно отступать. Есть идеи, как найти правильный путь? Я действительно ценю вашу помощь!
Ответ №1:
Прежде всего, в вашем коде есть опечатка. Это должно быть process.env.NODE_ENV
, а не process.enn.NODE_ENV
Также сделайте это:
if (process.env.NODE_ENV === "production") {
app.use(express.static(path.join(__dirname, "../Frontend-Folder/build")))
app.get("*", (req, res) => {
res.sendFile(path.resolve(__dirname, "/../Frontend-Folder", "build",
"index.html"))
})
}
Обратите внимание на «присоединиться» в приложении.используйте, а не разрешайте.
Ваш файл сборки package.json должен быть:
"heroku-postbuild": "NPM_CONFIG_PRODUCTION=false npm install --prefix Frontend-
Folder amp;amp; npm run build --prefix Frontend-folder"