LINUX.ORG.RU

JS посоветуйте новичку

 


0

1

Всем привет!

Решил покопаться вот в этом фреймворке. Я понимаю, что он имеет больше отношения к мобилкам, а не напрямую к вебу,но изначально он вырос из вэба, насколько я помню.

У меня есть несколько основных вопросов:

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 включить опцию глубокого дебага? Как превращать минифицированный текст в читаемый?

★★

в смысле - возможно ли заранее сказать, смотря на версии nodejs и npm, что будут какие-либо конфликты.

https://docs.npmjs.com/files/package-lock.json и заодно можно в package.json указать версии nodejs/npm

сделать работу с типами лучше

Прикручивать flowtype (если JS) либо писать на любом из компилируемых в JS языков (typescript, reasonml, сотни их)

4) Существуют ли альтернативы JS в вебе/трансляторы в/из него с других языков?

В react-native? Можешь взять и писать на нативном swift/kotlin'е. Или на objc/java.

5) Как превращать минифицированный текст в читаемый?

sourcemaps, дебаггеры должны это уметь. Но... при разработке же обычно пропускают минификацию.

x3al ★★★★★ ()
Последнее исправление: x3al (всего исправлений: 3)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.