Как Heroku может взломать sh из пакета. json номер версии? - PullRequest
0 голосов
/ 07 февраля 2020

Я управляю ботом Discord на Heroku, используя GitHub. В какой-то момент Heroku внезапно упал при запуске моего приложения. Сборка прошла нормально, но она не нашла ни одной из моих зависимостей при запуске (произошел сбой при первом, но позже выяснилось, что не все из них). Поскольку установка моих зависимостей с использованием консоли Heroku (heroku run npm install discord.js et c.) И последующее запуск приложения работали, стало ясно, что Heroku не устанавливает зависимости.

При изменении одного файла за раз и затем, снова развернув систему, я наконец нашел виновника: изменив номер версии в пакете. json на 3.7. С 3.6.4 все было в порядке (предыдущая версия), 3.7 разбил его, вернувшись к 3.6.4 (просто номер!) Или пропустив до 3.7.1, исправил его. Теперь я думаю, у меня вопрос, как может иметь другой номер версии в пакете. json cra sh приложение, когда оно требует своих модулей?

Просто чтобы показать, что это действительно просто номер версии, вот мой пакет. json:

{
  "name": "myapp",
  "version": "3.7",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author": "author",
  "license": "ISC",
  "dependencies": {
    "discord.js": "^11.5.1",
    "find": "^0.3.0",
    "firebase-admin": "^8.9.2",
    "fs": "0.0.1-security",
    "python-shell": "^1.0.8"
  }
}

Я просто не могу обернуть голову вокруг него. И правильно, я знаю, что это не самый чистый пакет. json, но он работал раньше с версии 0 до 3.6.4, поэтому я решил, что в нем нет скриптов / движков и т. Д. c. не было бы проблемы ... Может быть, кто-нибудь здесь имеет какое-либо представление, в чем была проблема?

1 Ответ

0 голосов
/ 07 февраля 2020

Просто наткнулся на ответ сам. В номере версии используется синтаксис semver , для которого требуется три раздела, разделенных точкой. Запуск его локально Node, похоже, не заботится об этом синтаксисе, но, видимо, это делает Heroku. Heroku, вероятно, не использует файл пакета. json, когда синтаксис неверен, и, следовательно, зависимости не устанавливаются во время сборки. Я думаю, что мне просто повезло, что я никогда не развертывал версию с номером версии только двумя разделами. Спасибо, и извините за вопрос, на который я бы нашел ответ, если бы подумал об этом немного больше.

...