#reactjs #express #heroku #yarnpkg #package.json
#reactjs #экспресс #heroku #yarnpkg #package.json
Вопрос:
Я хочу развернуть свой веб-сайт react на Heroku, и я следую этому руководству: https://medium.com/jeremy-gottfrieds-tech-blog/tutorial-how-to-deploy-a-production-react-app-to-heroku-c4831dfcfa08 .
Я создал экспресс-сервер и изменил свой package.json, как показано здесь, но когда я запускаю yarn start
и перехожу к localhost: 8080. Я могу видеть свою страницу, но в терминале я вижу это
C:UsersivanrDocumentsGitHubbees>yarn start
yarn run v1.22.4
$ node server.js
events.js:200
throw er; // Unhandled 'error' event
^
Error: ENOENT: no such file or directory, open 'C:UsersivanrDocumentsGitHubbeesbuildfavicon.ico'Emitted 'error' event on ReadStream instance at:
at internal/fs/streams.js:120:12
at FSReqCallback.oncomplete (fs.js:146:23) {
errno: -4058,
code: 'ENOENT',
syscall: 'open',
path: 'C:\Users\ivanr\Documents\GitHub\bees\build\favicon.ico'
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
server.js
const express = require('express');
const favicon = require('express-favicon');
const path = require('path');
const port = process.env.PORT || 8080;
const app = express();
app.use(favicon(__dirname '/build/favicon.ico'));
// the __dirname is the current directory from where the script is running
app.use(express.static(__dirname));
app.use(express.static(path.join(__dirname, 'build')));
app.get('/ping', function (req, res) {
return res.send('pong');
});
app.get('/*', function (req, res) {
res.sendFile(path.join(__dirname, 'build', 'index.html'));
});
app.listen(port);
package.json
{
"name": "business-scheduler",
"version": "0.1.0",
"private": true,
"dependencies": {
"@testing-library/jest-dom": "^4.2.4",
"@testing-library/react": "^9.3.2",
"@testing-library/user-event": "^7.1.2",
"apollo-boost": "^0.4.7",
"apollo-link-context": "^1.0.20",
"apollo-link-ws": "^1.0.20",
"bootstrap": "^4.5.0",
"concurrently": "^5.2.0",
"express": "^4.17.1",
"express-favicon": "^2.0.1",
"file-loader": "^6.0.0",
"graphql": "^15.0.0",
"moment": "^2.26.0",
"moment-range": "^4.0.2",
"node-sass": "^4.14.0",
"path": "^0.12.7",
"react": "^16.13.1",
"react-apollo": "^3.1.5",
"react-bootstrap": "^1.0.1",
"react-calendar": "^3.0.1",
"react-copy-to-clipboard": "^5.0.2",
"react-datepicker": "^3.1.3",
"react-dom": "^16.13.1",
"react-gravatar": "^2.6.3",
"react-router": "^5.1.2",
"react-router-dom": "^5.1.2",
"react-scripts": "3.4.1",
"react-timestamp": "^5.1.0",
"react-week-calendar": "^0.1.3",
"subscriptions-transport-ws": "^0.9.16"
},
"scripts": {
"start": "node server.js",
"build": "react-scripts build",
"test": "react-scripts test",
"eject": "react-scripts eject"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
}
}
Я сделал то же самое, что и в руководстве, но это не работает. У кого-нибудь есть идея относительно того, почему это не работает, или есть лучший способ развертывания веб-сайта React в Heroku.
Комментарии:
1. Вы видите
favicon.ico
вbuild
папке?2. Да, это был ответ!