Поиск по этому блогу

среда, 12 октября 2016 г.

Надо просматривать package.json и научиться обновлять основные зависимости

Например, пробую пакет hexo-theme-zurb-foundation пробую запустить gulp и получаю: Ошибка Error: libsass bindings not found. Try reinstalling node-sass? при попытке выплнения команд gulp... Пришлось перечитать docs.npmjs.com, кроме того, я нашел Troubleshooting в документации node-sass...
КА еще нахожу десятки рецептов на stackoverflow.com libsass bindings not found when using node-sass in nodejs
Оказывается, что таких же как я (чайников) очень много. Потому принимаем правило (в заголовке).

style="float:left; margin-right:10px;" Troubleshooting This document covers some common node-sass issues and how to resolve them. You should always follow these steps before opening a new issue.
libsass bindings not found when using node-sass in nodejs
node-sass-binaries
node-sass Node-sass is a library that provides binding for Node.js to LibSass, the C version of the popular stylesheet preprocessor, Sass.

It allows you to natively compile .scss files to css at incredible speed and automatically via a connect middleware.


npmjs.com These are the docs you're looking for How npm works
01 - Packages
02 - npm v2
03 - npm v3
04 - npm v3 Duplication
05 - npm v3 Non-determinism
Configuring npm
folders Folder Structures Used by npm
npmrc The npm config files
package.json Specifics of npm's package.json handling
Where does npm put stuff?
tarball)

In [ ]:
####Решение
In [ ]:
npm uninstall gulp-sass
npm i gulp-sass

Результаты

Ошибка эта детская. От непонимания того, как npm3 сохраняет файлы. Я сначала "вспомнил" документацию, а потом просто поупражнялся с npm ls node-sass, npm cache ls gulp-sass

Оказалось, что в кэше находится изрядное количество старых версий gulp-sass. Откуда они берутся?

Ответ очевиден: из "старых" пакетов. А они устанавливаются из старых package.json...
В частности, ошибку

Error: libsass bindings not found. Try reinstalling node-sass?

не устранить переустановкой пакета (или rebuilding, как на stackowerflow советуют) потому, что устаревшая версия node-sass была установлена из package.json старого gulp-sass

Выводы

Надо просматривать package.json и научиться обновлять основные зависимости. Для начала вручную (хотя бы). Например, что мне мешало обновить gulp-sass? На код в gulpfile.js это обновление не повлияло... Получается, даже если все работает, надо бы обновиться и кэш почистить.

Далее упражнения, благодаря которым я сделал это великое открытие.

folders Folder Structures Used by npm

Local install (default): puts stuff in ./node_modules of the current package root.
Global install (with -g): puts stuff in /usr/local or wherever node is installed.
Install it locally if you're going to require() it.
Install it globally if you're going to run it on the command line.
If you need both, then install it in both places, or use npm link

npm config get cache - вот они где находятся

In [ ]:
F:\hexo\themes\hexo-theme-zurb-foundation>npm config get cache
C:\Users\alter_000\AppData\Roaming\npm-cache

F:\hexo\themes\hexo-theme-zurb-foundation>

npm cache ls - где кэш для конкретного пакета

In [ ]:
F:\hexo>npm cache ls gulp
~\AppData\Roaming\npm-cache\gulp
~\AppData\Roaming\npm-cache\gulp\3.9.1
~\AppData\Roaming\npm-cache\gulp\3.9.1\package.tgz
~\AppData\Roaming\npm-cache\gulp\3.9.1\package
~\AppData\Roaming\npm-cache\gulp\3.9.1\package\package.json
~\AppData\Roaming\npm-cache\gulp\4.0.0-alpha.2
~\AppData\Roaming\npm-cache\gulp\4.0.0-alpha.2\package.tgz
~\AppData\Roaming\npm-cache\gulp\4.0.0-alpha.2\package
~\AppData\Roaming\npm-cache\gulp\4.0.0-alpha.2\package\package.json

F:\hexo>npm cache ls gulp-sass
~\AppData\Roaming\npm-cache\gulp-sass
~\AppData\Roaming\npm-cache\gulp-sass\1.3.3
~\AppData\Roaming\npm-cache\gulp-sass\1.3.3\package.tgz
~\AppData\Roaming\npm-cache\gulp-sass\1.3.3\package
~\AppData\Roaming\npm-cache\gulp-sass\1.3.3\package\package.json
~\AppData\Roaming\npm-cache\gulp-sass\2.3.2
~\AppData\Roaming\npm-cache\gulp-sass\2.3.2\package.tgz
~\AppData\Roaming\npm-cache\gulp-sass\2.3.2\package
~\AppData\Roaming\npm-cache\gulp-sass\2.3.2\package\package.json

F:\hexo>
In [ ]:
F:\hexo>npm cache ls node-sass
~\AppData\Roaming\npm-cache\node-sass
~\AppData\Roaming\npm-cache\node-sass\2.1.1
~\AppData\Roaming\npm-cache\node-sass\2.1.1\package.tgz
~\AppData\Roaming\npm-cache\node-sass\2.1.1\package
~\AppData\Roaming\npm-cache\node-sass\2.1.1\package\package.json
~\AppData\Roaming\npm-cache\node-sass\3.10.0
~\AppData\Roaming\npm-cache\node-sass\3.10.0\package.tgz
~\AppData\Roaming\npm-cache\node-sass\3.10.0\package
~\AppData\Roaming\npm-cache\node-sass\3.10.0\package\package.json
~\AppData\Roaming\npm-cache\node-sass\3.10.1
~\AppData\Roaming\npm-cache\node-sass\3.10.1\package.tgz
~\AppData\Roaming\npm-cache\node-sass\3.10.1\package
~\AppData\Roaming\npm-cache\node-sass\3.10.1\package\package.json
~\AppData\Roaming\npm-cache\node-sass\3.4.2
~\AppData\Roaming\npm-cache\node-sass\3.4.2\package.tgz
~\AppData\Roaming\npm-cache\node-sass\3.4.2\package
~\AppData\Roaming\npm-cache\node-sass\3.4.2\package\package.json
~\AppData\Roaming\npm-cache\node-sass\3.8.0
~\AppData\Roaming\npm-cache\node-sass\3.8.0\package.tgz
~\AppData\Roaming\npm-cache\node-sass\3.8.0\package
~\AppData\Roaming\npm-cache\node-sass\3.8.0\package\package.json
~\AppData\Roaming\npm-cache\node-sass\3.9.0
~\AppData\Roaming\npm-cache\node-sass\3.9.0\package.tgz
~\AppData\Roaming\npm-cache\node-sass\3.9.0\package
~\AppData\Roaming\npm-cache\node-sass\3.9.0\package\package.json

F:\hexo>

Разные локальныесборки node-sass

Вот эта сборка выдает ошибку

In [ ]:
F:\hexo\themes\hexo-theme-zurb-foundation>npm ls node-sass
hexo-theme-foundation@0.1.0 F:\hexo\themes\hexo-theme-zurb-foundation
`-- gulp-sass@1.3.3
  `-- node-sass@2.1.1


F:\hexo\themes\hexo-theme-zurb-foundation>

А эта работает без проблем

In [ ]:
F:\psd2html>npm ls node-sass
psd2html-boilerplate@1.2.2 F:\psd2html
`-- gulp-sass@2.3.2
  `-- node-sass@3.10.1


F:\psd2html>

Собираем информацию

In [ ]:
F:\hexo\themes\hexo-theme-zurb-foundation>npm -v
3.10.3

F:\hexo\themes\hexo-theme-zurb-foundation>node -v
v6.5.0

F:\hexo\themes\hexo-theme-zurb-foundation>node -p process.versions
{ http_parser: '2.7.0',
  node: '6.5.0',
  v8: '5.1.281.81',
  uv: '1.9.1',
  zlib: '1.2.8',
  ares: '1.10.1-DEV',
  icu: '57.1',
  modules: '48',
  openssl: '1.0.2h' }

F:\hexo\themes\hexo-theme-zurb-foundation>node -p process.platform
win32

F:\hexo\themes\hexo-theme-zurb-foundation>node -p process.arch
x64

F:\hexo\themes\hexo-theme-zurb-foundation>


Посты чуть ниже также могут вас заинтересовать

Комментариев нет: