Ваш синтаксически сжатый, абстрагированный, высокоуровневый язык с умопомрачительной стандартной библиотекой * может * решить * большинство * проблем, но вы облажаетесь, когда хоть раз что-то не сработает.
Так что я был наставником этого парня, который сделал действительно симпатичный веб-сайт с действительно изящным дизайном. И это было очень красиво. С плавной анимацией при прокрутке, потрясающими эффектами выскакивания кнопок, переворачивания и сдвига карточек. . . веб-сайт электронной коммерции, который заставит вас отправиться за покупками, даже если вы не собирались покупать что-либо.
Но однажды что-то пошло не так. Он не мог даже точно определить, что именно, вызвало ли это конкретную строку кода, которую он изменил, или это было потому, что он, наконец, перезагрузил свой Macbook через 2 месяца, или это было недавнее обновление npm, которое он запустил. Но все перестало работать. Он запустил сборку, терминал выдавил сотни выделенных красным и желтым линий, и он заблудился. Он понятия не имел, на что смотрел. Вместо привлекательного веб-сайта электронной коммерции перед ним стоял сломанный экран терминала.
Итак, я сел, пытаясь выяснить, что пошло не так, и вот простой пункт, показывающий, как простая проблема «не работает» переходит в другие проблемы, каждая на один уровень глубже.
- Частично проект был написан на Elm, который перенесен на JavaScript. Это вместе с некоторыми другими модулями работало как проект Nodejs.
- Первоначально он использовал NPM, затем переключился на Yarn. Позже, когда NPM 5 поддерживал файлы блокировки, он начал использовать NPM 5.
- Между этими двумя переключателями (NPM ›Yarn и Yarn› NPM) он обновил версию Python на своем ноутбуке (вы ведь знаете, что NPM зависит от Python, верно?)
- Он использовал горячую перезагрузку, для которой требовался собственный модуль fsevents, построенный с помощью node-gyp, для которого нужна согласованная версия Python. Если собственный модуль уже построен, node-gyp пропускает его восстановление.
- Он установил python с помощью macports. Но
port upgrade python
не удалось из-за определенных различий в структуре базы данных SQLite в реестре macports. - Это произошло потому, что он когда-то обновился с Mac OS Yosemite до El Capitan. Он никогда не понимал, что Macports работает некорректно, потому что установка новых пакетов работала нормально, а обновление старых было некорректным.
- Чтобы решить эту проблему, нужно было
git clone
macports и собрать его из исходников.
Итак, вот мой счастливый разработчик, кодирующий красивые веб-сайты на Elm, блаженно игнорируя тот факт, что он зависит от npm , который, в свою очередь, зависит от python который был установлен macports, который может стать согласованным при обновлении версии MacOS и в конечном итоге требует, чтобы вы собрали его из исходного кода, чтобы исправить.
Разве я не выручил его, о чем он задумался? Восстановление заводских настроек MacBook или покупка нового ноутбука. УХ ТЫ !
Не истолковывайте это неправильно, чтобы предположить, что я говорю, что вам нужно быть великим мастером ядра Linux, если вы хотите создавать привлекательные сайты электронной коммерции. Конечно нет. Но от внутренней части вашей системы никуда не деться. Иногда что-то в недрах вашей установки что-то ломается. Не волнуйся. (Wo) Мужик, запачкай руки немного Makefiles и кодом C ++ и исправь это. Не покупайте новый ноутбук.
Обязательное бессовестное самоподключение:
Я являюсь одним из соучредителей Coding Blocks - учебного лагеря по программированию, базирующегося в Нью-Дели, Индия. . Помимо прочего, мы обучаем веб-разработке Full Stack с использованием NodeJS, используя как классные программы, так и онлайн-классы. Следите за нашей средой, чтобы найти больше статей по Android и веб-разработке.