Всем привет!
Решил покопаться вот в этом фреймворке. Я понимаю, что он имеет больше отношения к мобилкам, а не напрямую к вебу,но изначально он вырос из вэба, насколько я помню.
У меня есть несколько основных вопросов:
1) Имеется ли какая-то стандартизация поведения nodejs и npm? в смысле - возможно ли заранее сказать, смотря на версии nodejs и npm, что будут какие-либо конфликты. Если конфликты завязаны на версиях пакетов, то хочется получить сообщение о конфликте от пакетного менеджера как можно раньше, как в случае, например, apt. У меня получалось так, что все пакеты по тому мануалу устанавливались, но сервер не запускался. И какого-то черта выдавалась ошибка вида «иди гугли»:
23:26:39: Unable to start server
See https://git.io/v5vcn for more information, either install watchman or run the following snippet:
sudo sysctl -w fs.inotify.max_user_instances=1024
sudo sysctl -w fs.inotify.max_user_watches=12288
npm ERR! code ELIFECYCLE
npm ERR! errno 1
После обновления npm способом sudo npm install npm
вылезали совершенно внезапные ошибки - вплоть до EACCES для рута (!), или что вместо установки в стандартную /usr/bin ставился в node_modules с рутом-владельцем. В чем причина такого нестандартного для линукса поведения? sudo pip
, например, ставит пакеты, куда нужно.
Вот пруфы:
$ sudo npm install -g exp
[sudo] пароль для aido:
/usr/local/bin/exp -> /usr/local/lib/node_modules/exp/bin/exp.js
> spawn-sync@1.0.15 postinstall /usr/local/lib/node_modules/exp/node_modules/spawn-sync
> node postinstall
> @expo/ngrok@2.2.9 postinstall /usr/local/lib/node_modules/exp/node_modules/@expo/ngrok
> node ./postinstall.js
ngrok - error unpacking binary { Error: EACCES: permission denied, open '/usr/local/lib/node_modules/exp/node_modules/@expo/ngrok/bin/ngrok'
errno: -13,
code: 'EACCES',
syscall: 'open',
path: '/usr/local/lib/node_modules/exp/node_modules/@expo/ngrok/bin/ngrok' }
npm WARN react-redux@5.0.6 requires a peer of react@^0.14.0 || ^15.0.0-0 || ^16.0.0-0 but none is installed. You must install peer dependencies yourself.
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! @expo/ngrok@2.2.9 postinstall: `node ./postinstall.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the @expo/ngrok@2.2.9 postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/aido/.npm/_logs/2017-10-19T20_46_00_533Z-debug.log
2) Предположим, в какой-то из моментов выполнения некоторого мануала, я не заметил, как отклонился от него и начались ошибки, но не сразу. От ноды можно получить обратную связь о том, что именно пошло не так? Например, в линуксе при работе с девайсами в dmesg ты всегда можешь посмотреть, что пошло не так и в какой момент, и уже сразу ясно, куда копать. Ну или после чтения /var/log тоже зачастую понятно становится, откуда ноги растут.
3) JS чуть моложе питона и времени хватало, чтобы обрасти идиомами, или в новых версиях изменить синтаксис в лучшую сторону, или сделать работу с типами лучше - статика как в С++, или динамика как в питоне. Почему оно до сих пор где-то посередине? В чем удобство работы с типом как со строкой? Или тройного оператора сравнения?
4) Существуют ли альтернативы JS в вебе/трансляторы в/из него с других языков?
5) Как в JS включить опцию глубокого дебага? Как превращать минифицированный текст в читаемый?