Развертывание в heroku [Ошибка: создать babel-node ENOENT]

Проект отлично работает на машине разработчика. Я уже провел более 5 часов:

  • удаленное опробование различных конфигураций с помощью сценариев bash 'start' на heroku

  • установка babel-cli и babel-preset-env в качестве зависимостей вместо devDependencies

  • читать документацию heroku о локальных сборках, пробовать их

  • отключение dotenv в производстве

Каковы ваши предложения / решения этой несовместимости babel-node и heroku? Может быть, они его отключают, так как это увеличивает нагрузку на память сервера? Я написал все свои файлы на ES6 и попытался переписать их на старый синтаксис, но это почти невозможно. Есть ли способ заставить babel работать на стороне сервера для heroku?

Журнал приложений Heroku:

2018-05-01T12:08:44.677261+00:00 heroku[web.1]: Starting process with command `npm start`
2018-05-01T12:08:47.873964+00:00 app[web.1]: [heroku-exec] Starting
2018-05-01T12:08:48.920661+00:00 app[web.1]: 
2018-05-01T12:08:48.920707+00:00 app[web.1]: > [email protected] start /app
2018-05-01T12:08:48.920710+00:00 app[web.1]: > cross-env NODE_ENV=production babel-node server/server.js
2018-05-01T12:08:48.920712+00:00 app[web.1]: 
2018-05-01T12:08:49.196690+00:00 app[web.1]: events.js:183
2018-05-01T12:08:49.196703+00:00 app[web.1]:       throw er; // Unhandled 'error' event
2018-05-01T12:08:49.196704+00:00 app[web.1]:       ^
2018-05-01T12:08:49.196706+00:00 app[web.1]: 
2018-05-01T12:08:49.196709+00:00 app[web.1]: Error: spawn babel-node ENOENT
2018-05-01T12:08:49.196710+00:00 app[web.1]:     at _errnoException (util.js:1024:11)
2018-05-01T12:08:49.196712+00:00 app[web.1]:     at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19)
2018-05-01T12:08:49.196714+00:00 app[web.1]:     at onErrorNT (internal/child_process.js:372:16)
2018-05-01T12:08:49.196717+00:00 app[web.1]:     at _combinedTickCallback (internal/process/next_tick.js:138:11)
2018-05-01T12:08:49.196718+00:00 app[web.1]:     at process._tickCallback (internal/process/next_tick.js:180:9)
2018-05-01T12:08:49.196720+00:00 app[web.1]:     at Function.Module.runMain (module.js:678:11)
2018-05-01T12:08:49.196721+00:00 app[web.1]:     at startup (bootstrap_node.js:187:16)
2018-05-01T12:08:49.196723+00:00 app[web.1]:     at bootstrap_node.js:608:3
2018-05-01T12:08:49.206967+00:00 app[web.1]: npm ERR! code ELIFECYCLE
2018-05-01T12:08:49.208660+00:00 app[web.1]: npm ERR! errno 1
2018-05-01T12:08:49.211774+00:00 app[web.1]: npm ERR! [email protected] start: `cross-env NODE_ENV=production babel-node server/server.js`
2018-05-01T12:08:49.212391+00:00 app[web.1]: npm ERR! Exit status 1
2018-05-01T12:08:49.212731+00:00 app[web.1]: npm ERR! 
2018-05-01T12:08:49.212944+00:00 app[web.1]: npm ERR! Failed at the [email protected] start script.
2018-05-01T12:08:49.213151+00:00 app[web.1]: npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
2018-05-01T12:08:49.220087+00:00 app[web.1]: 
2018-05-01T12:08:49.220400+00:00 app[web.1]: npm ERR! A complete log of this run can be found in:
2018-05-01T12:08:49.220579+00:00 app[web.1]: npm ERR!     /app/.npm/_logs/2018-05-01T12_08_49_214Z-debug.log
2018-05-01T12:08:49.315806+00:00 heroku[web.1]: State changed from starting to crashed
2018-05-01T12:08:49.301459+00:00 heroku[web.1]: Process exited with status 1

package.json:

{
  "name": "rearn",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "engines": {
    "node": "8.9.3",
    "npm": "5.6.0"
  },
  "scripts": {
    "build": "next build",
    "start": "cross-env NODE_ENV=production babel-node server/server.js",
    "test": "eslint pages components lib",
    "dev": "nodemon server/server.js --watch server --exec babel-node server/server.js",
    "port": "cross-env PORT=4000 npm start",
    "prod": "yarn build && cross-env NODE_ENV=production babel-node server/server.js",
    "precommit": "yarn test",
    "prepush": "yarn test",
    "heroku-postbuild": "YARN_PRODUCTION=false yarn install && yarn build"
  },
  "keywords": [],
  "author": "",
  "license": "ISC",
  "dependencies": {
    "@zeit/next-sass": "^0.1.2",
    "axios": "^0.18.0",
    "bootstrap": "4.0.0",
    "bootstrap-material-design": "^4.1.1",
    "connect-mongo": "^2.0.1",
    "cross-env": "^5.1.4",
    "dotenv": "^5.0.1",
    "express": "^4.16.3",
    "express-session": "^1.15.6",
    "express-useragent": "^1.0.12",
    "jquery": "^3.3.1",
    "material-ui": "^0.20.0",
    "mongoose": "^5.0.15",
    "next": "5.1.0",
    "next-offline": "^2.5.0",
    "next-redux-wrapper": "^1.3.5",
    "node-sass": "^4.8.3",
    "passport": "^0.4.0",
    "passport-google-oauth": "^1.0.0",
    "react": "^16.2.0",
    "react-dom": "^16.2.0",
    "react-popper": "^0.10.1",
    "react-redux": "^5.0.7",
    "react-reveal": "^1.2.1",
    "react-transition-group": "^2.3.0",
    "redux": "^4.0.0",
    "redux-form": "^7.3.0",
    "redux-thunk": "^2.2.0",
    "styled-jsx": "^2.2.6",
    "workbox-background-sync": "^3.0.1"
  },
  "browserslist": [
    "> 1%"
  ],
  "devDependencies": {
    "babel-cli": "^6.26.0",
    "babel-preset-env": "^1.6.1",
    "eslint": "4.9.0",
    "eslint-config-airbnb": "16.1.0",
    "eslint-plugin-compat": "^2.2.0",
    "eslint-plugin-import": "2.7.0",
    "eslint-plugin-jsx-a11y": "6.0.2",
    "eslint-plugin-react": "7.4.0",
    "husky": "^0.14.3"
  }
}

Я должен добавить, что сборка проходит отлично, без ошибок. Ошибка при загрузке страницы.

Neone 01.05.2018 14:43
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
647
2

Ответы 2

Решено. На самом деле я удалял и устанавливал babel-cli и babel-preset-env в bash, и почему-то heroku не обновлял package.json удаленно? Почему? Решение:

  • установка babel-cli и babel-preset-env в качестве зависимостей вместо devDependencies (на самом деле babel-cli достаточно только для next.js, так как он использует последнюю конфигурацию babel).

Нашел этот пост, так как у меня была аналогичная проблема. переместил весь блок

"@babel/cli": "7.5.5",
"@babel/core": "7.5.5",
"@babel/node": "7.5.5",
"@babel/plugin-transform-runtime": "7.5.5",
"@babel/preset-env": "7.5.5",
"@babel/runtime": "7.5.5",

из devDepenencies в раздел зависимостей package.json = проблема решена на данный момент, возможно, не окончательное идеальное решение, жесткое

Другие вопросы по теме