Heroku Express + реагировать + веб-пакет - не может работать на сервере - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть приложение webpack + ts + express + реакции. Я могу построить его на месте без каких-либо проблем. ,И все работает, но когда я публикую это на heroku, я получаю это:

eb.1]: npm ERR! код ELIFECYCLE 2019-11-06T15: 32: 36.057014 + 00:00 приложение [web.1]: npm ERR! errno 2

2019-11-06T15: 32: 36.058319 + 00: 00 app [web.1]: npm ERR! v@0.0.0 start: tsc && node ./build/app.js

2019-11-06T15: 32: 36.058526 + 00: 00 app [web.1]: npm ERR! Состояние выхода 2

2019-11-06T15: 32: 36.058771 + 00: 00 app [web.1]: npm ERR!

2019-11-06T15: 32: 36.058897 + 00:00 приложение [web.1]: npm ERR! Ошибка при запуске сценария v@0.0.0.

2019-11-06T15: 32: 36.059048 + 00: 00 app [web.1]: npm ERR! Это, вероятно, не проблема с npm. Скорее всего, есть дополнительные выходные данные регистрации.

Структура папки

API

    • app.ts

клиент

    • src
    • tsconfig
    • package.json

tsconfig

package.json

file app.ts

app.use(cors());
app.use(morgan('dev'));
app.use(express.json());
app.use(cookieParser());
app.use(morgan('dev'));
app.use(express.static(path.join(__dirname, '../client/build')));

app.use('/api/posts', postRoutes);
app.use('/api/users', userRoutes);
app.use('/api', errorRoutes);

app.get('/*', (req, res: Response) => {
  res.sendFile(path.join(__dirname, '../client/build/index.html'));
});

const port = process.env.PORT || 1646;
app.listen(port, () => {
  // tslint:disable-next-line: no-console
  console.log(`listening on port ${port}`);
});

{
  "name": "v",
  "version": "0.0.0",
  "engines": {
    "node": "8.11.2",
    "npm": "5.6.0"
  },
  "private": true,
  "scripts": {
    "dev:front": "cd client && npm run dev",
    "dev:server": "ts-node-dev --respawn --transpileOnly ./api/app.ts",
    "dev": "concurrently \"npm run dev:server\" \"npm run dev:front\"",
    "tsc": "tsc",
    "start": "tsc && node ./build/app.js",
    "clean": "rimraf ./build",
    "build": "tsc && node ./build/app.js",
    "heroku-postbuild": "cd client && npm run build",
    "heroku-prebuild": "cd client && npm install"
  },
  "dependencies": { //I Putted evrything here to dependencies
    "@material-ui/lab": "^4.0.0-alpha.30",
    "cookie-parser": "~1.4.4",
    "cors": "^2.8.5",",
    "dotenv": "^8.2.0", ....

tsconfig

"target": "es6"
    "module": "commonjs"
    "outDir": "./build",
"include": [
    "api/"
  ]

package.json client

scripts ...
 "build": "npm run clean && webpack -p ---open --config webpack/production.js",
    "clean": "rimraf build/*",
    "tsc": "tsc --noEmit",
    "lint": "tslint './src/**/*.ts*' --format stylish --project . --force",
    "dev": "webpack-dev-server ---open --config webpack/development.js"

1 Ответ

0 голосов
/ 06 ноября 2019

Ваш процесс сборки не должен запускать ваше приложение. Измените

"heroku-postbuild": "cd client && npm run build",

на

"heroku-postbuild": "npm run tsc",

Это должно создать папку сборки, которую вы хотите. Затем вы захотите добавить новый файл с именем Procfile в корень вашего проекта со следующей строкой кода:

web: node build/api.js

, которая сообщает Heroku, как запустить ваше приложение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...