Node Sass не может найти привязку для вашей текущей среды

499

У меня возникают проблемы при создании приложения, потому что node-sass продолжает сбой с ошибкой.

ОШИБКА в отсутствующей привязке /Users/warren/Sites/random-docs/my-cms/node_modules/node-sass/vendor/darwin-x64-11/binding.node Узлу
Sass не удалось найти привязку для вашей текущей среды: OS X 64-битный с узлом 0.10.x

Я пробовал бегать

npm rebuild node-sass

который говорит

Двоичный код в порядке; выход.

При запуске node -vя получаю v6.2.2

Что отличается от того, что говорит ошибка sass "Node 0.10.x". Я не могу понять, почему он получает неправильную версию. Я также попытался удалить папку node_modules и запустить npm update или npm install, которые не решили проблему. Любые идеи?

wazzaday
источник
9
Вы используете менеджер версий узлов, например nvm? Если вы иногда это испортили некоторые пути модуля npm, и они пытаются использовать версию, отличную от текущей. Если нет, вы всегда можете попробовать удалить node_modulesпапку и снова установить зависимости
Vasil Dininski
2
Эй, я не использую nvm, и я попытался удалить / переустановить шаг. не повезло.
Wazzaday
какая у вас среда разработки? вы используете VS.NET 2105?
Майк Андерсон
@VasilDininski Я использую nvm, что мне делать?
Субхан Сариф
1
Откройте Visual Studio 2017 Перейдите в Инструменты -> Параметры ... Перейдите в раздел Проекты и решения -> Управление веб-пакетами, переместите $ (PATH) в верхнюю часть этого списка и закройте это окно. В моем случае это решение работало, потому что моя версия узла 11.x
Alreadytakenindeed

Ответы:

721

У меня такая же проблема

В вашем файле gulpfile есть
ошибка : Ошибка: отсутствует привязка E: \ allapp \ badshaindiancuisine \ node_module \ node-sass \ vendor \ win32-x64-46 \ binding.node Узлу
Sass не удалось найти привязку для вашей текущей среды: Windows 64 -бит с Node.js 4.x

Обнаружены привязки для следующей среды:
    - 64-разрядная версия OS X с Node.js 4.x

Как решить мою проблему

Зайдя в папку проекта и затем выполните:

npm rebuild node-sass
Бипон Бисвас
источник
6
Первоначально работал, но все еще были проблемы. Итак, я перешел к /usr/local/lib/использованию CMD + SHIFT + G в поиске и переименовал папку node-sass. Затем побежал npm install node-sass -g. это исправлено. Я на Mac OS
IsmailS
Я столкнулся с этой проблемой после обновления nodejs до 8.xx, и это решило ее. Спасибо большое! Оценил!
ChiragMS
2
Не работает Узел: v10.7.0 узел-Sass: v3.13.1. Говорит, что моя текущая среда - 32-битные окна с узлом 0.10.x, что просто неверно.
Bardicer
Это работало в Windows 7 с узлом 10.14 LTS и npm 6.4.1.
Сантон
9
Первым шагом было бы удалить ваш node_modulesи запустить, npm installа не восстанавливать ваш node-sass.
Нихил Нанджаппа
295

Обратите внимание, что я использую VS 2015, 64-битную Windows 7.

Также работает для VS 2017 и VS 2019 (из ответов на этот пост)

Task Runner Explorer не может загружать задачи

Для VS 2015

  • Перейдите: Инструменты> Параметры> Проекты и решения> Внешние веб-инструменты

Для VS 2017 (.3)

  • Инструменты> Параметры> Проекты и решения> Управление веб-пакетами> Внешние веб-инструменты (за @nothrow)

В VS 2017 и 2019 также необходимо указывать $ (PATH) выше $ (VSINSTALLERDIR) \ Web \ External


  • Измените порядок так, чтобы $ (PATH) был выше $ (DevEnvDir) \ Extensions \ Microsoft \ Web Tools \ External

введите описание изображения здесь


Удаление node_modulesи запуск, npm installа затем npm rebuild node-sass ничего не сделал .

Роб Скотт
источник
5
Если вы используете VS2015, вы должны внести изменения, описанные в этом ответе. Это, вероятно, все, что вам нужно сделать, чтобы исправить эту проблему.
Бонневиль
12
Это также работало для новой установки VS2017 также.
зарин
8
В VS2017.3 путь к настройкеTools > Options > Projects and Solutions > Web Package Management > External Web Tools
nothrow
6
блин! я бы никогда не разобрался в этом ... все, чтобы скомпилировать глупый sass с тупым узлом в тупом javascript
Л.Трабачин,
7
Могу подтвердить, это все еще вещь в VS 2019.
JamesT
140

У меня была такая же проблема в среде Windows, получая следующую ошибку:

Ошибка: отсутствует привязка C: \ Development {ProjectName} \ node_modules \ node-sass \ vendor \ win32-ia32-47 \ binding.node Узлу
Sass не удалось найти привязку для вашей текущей среды: Windows 32-bit с Node.js 5 .x
Найдены привязки для следующих сред:
   - Windows 64-bit с Node.js 6.x

Ни одна из npmкоманд , перечисленных в других ответах здесь ( npm install, npm rebuild node-sassи т.д.) не работал.

Вместо этого мне пришлось скачать отсутствующую привязку и поместить ее в соответствующую папку назначения.

Привязки можно найти на Git . Сопоставьте файл с именем папки, указанным после /node_modules/node-sass/vendor/в вашем сообщении об ошибке («darwin-x64-11» в вашем случае, так что вы захотите darwin-x64-11_binding.nodeфайл).

Создайте отсутствующую папку в вашем проекте ( /node_modules/node-sass/vendor/darwin-x64-11), скопируйте .nodeфайл в новый каталог и переименуйте его в binding.node.

URL-адрес выпуска Node-sass: https://github.com/sass/node-sass/releases

Beofett
источник
3
Также работал для меня, спасибо! Пробовал очистить node_modules, удалить кеш, rifraf, пересобрать node-sass, пересобрать из VS2015 вместо командной строки с помощью npm, и в конце это исправило это.
Артур Карвалью
1
@ JanCiołek У меня такое было только один раз, поэтому мне никогда не приходилось переделывать это. Я не уверен, была ли это какая-то конкретная версия или была проблема только с конкретной установкой, но я не нашел лучшего решения (другие ответы здесь не работали для меня). Громоздким или нет, казалось, было необходимым решением для некоторых вариантов этой проблемы.
Беофетт
1
@Beofett Эта ошибка много времени, я сделал все, что было упомянуто в этой теме, но я забыл запустить компиляцию. Спасибо!
Ян Чолек
4
Это единственный ответ, который мне подходит, но я нашел мою привязку в github.com/sass/node-sass/releases вместо связанного URL. Приветствия
Клапас
2
Спасибо @Beofett. Ваш ответ спас меня от запуска проекта Ionic в Windows и Mac OSX.
Маркус Кризостомо
138

Работал для меня:

Просто удалите папку node-sass и запустите npm install.

Codiee
источник
4
Это работает и для меня. Ясно, что конфликт версии узла. Спасибо!
Лиз Лемон
1
Пришлось удалить его в следующем каталоге: C: \ Users \ your_user_name \ AppData \ Roaming \ npm-cache
Мэтт
7
Это сработало! npm rebuild node-sassне работал для меня. (Mac с WebStorm)
Джекпил
3
Это единственное решение, которое сработало для меня! npm rebuild node-sass --forceтоже не работал
bigsee
Это должно быть отмечено как ответ. До сих пор я понятия не имел, почему мое решение нацеливалось на более высокую версию узла, и продолжало выдавать мне сообщение об ошибке в nodeassass. У меня был шаг в конвейере Azure, чтобы заставить версию узла выбрать ту, которую я хочу. Теперь я могу удалить этот шаг!
Джеймс Блэкберн
117

Просто выполните: npm rebuild node-sass --force


Если вышесказанное по какой-то причине вам не помогло, попробуйте это:

  1. Удалить node-sassпапку подnode_modules
  2. npm install

В моем случае это также не могло найти Python.

Следующая процедура решила проблему (Windows):

npm rebuild node-sass --force
-- cannot find python.exe, if you have Python installed, add it to your path:
set PYTHON=C:\Python27\Python.exe
-- else: download python "Windows x86-64-MSI" installer from https://www.python.org/downloads/release/python-2714/
-- install python
-- at installation start check: add env variable to path
-- after successfull installation:
npm rebuild node-sass --force
-- finished successfully
Легенды
источник
1
Вышесказанное сработало для меня, хотя это происходило дважды в двух разных приложениях в двух разных папках. Установка на python была одноразовой (ienot понадобилась, когда я получил ошибку второй раз в моем другом приложении), и мне не нужна была заключительная команда npm run build (по крайней мере, явно), но мне нужно было запустить rebuild - заставьте дважды для обоих моих приложений.
Грег Тревеллик,
31

npm rebuild node-sass --force

Или, если вы используете node-sass внутри контейнера:

docker exec <container-id> npm rebuild node-sass --force

Эта ошибка возникает, когда node-sass не имеет правильной привязки для текущей операционной системы.

Если вы используете Docker, эта ошибка обычно возникает, когда вы добавляете node_modulesнапрямую в файловую систему контейнера в вашем Dockerfile (или монтируете их с помощью тома Docker).

Архитектура контейнера, вероятно, отличается от вашей текущей операционной системы. Например, я установил node-sass на macOS, но мой контейнер работает под управлением Ubuntu.

Если вы заставляете node-sass перестраиваться из контейнера, node-sass загрузит правильные привязки для операционной системы контейнера.

Смотрите мой репро случай, чтобы узнать больше.

Шервуд Каллавей
источник
1
Столкновение с той же проблемой в разных средах: - dev под MacOS для модульных тестов - dev с использованием docker-compose (для полного взаимодействия с системой) - prod под ОС на основе alpine; Смонтировать (или нет) и npm install(или нет) в докере проблематично, если у вас есть архитектурно-зависимые модули: получение бинарных файлов darwin или linux в зависимости от того, где вы npm iЭто происходит для таких модулей NodeJS, как node-sass, или@google-cloud/pubsub
Laurent
Спасибо, что упомянули решение для докера, это именно то, что исправило его для меня!
Джошуа Сойло
Я имел, /node_modulesкоторый был привязан в контейнере в /app/node_modules. Хотя мой NODE_PATHбыл /node_modules(который существовал) и должен был быть в другом месте ..., это случайно начало вызывать проблемы. Я установил в обоих местах, чтобы мои разработчики могли работать с моим vscode. возгласы. странные вещи. Спасибо за упоминание о докере <3
Ник Брэди
25

У меня была похожая проблема, и причина была в том, что на моей машине были установлены две версии Node: одна «глобальная» и другая на уровне проекта. Sass будет собираться правильно только в том случае, если сборка Gulp работает под версией Node.js 4.x, поэтому убедитесь, что вы обновляете версию Node, которую вы используете.

PS: Если вы полностью удалите папку node_modules в своем проекте и пересоберите с нуля, npm загрузит правильные зависимости для вашей текущей системы и версии узла.

Росио Гарсия Луке
источник
слава богу за это На самом деле я сначала попытался понизить версию узла на своем MacBook, а затем через полчаса сдался
Cpt. Senkfuss
17

в некоторых случаях вам нужно удалить и установить библиотеку node-sass. Пытаться:

npm uninstall --save node-sass

а также

npm install --save node-sass

посмотри на это его работа для меня, стек ссылки здесь

core114
источник
13

Попробуйте добавить суффикс --force

npm rebuild node-sass --force
user3890355
источник
1
Работал на меня. Спасибо.
jpcmf80
12

Для моего конкретного случая ни один из приведенных выше ответов не сработал. Итак, что это сработало:

rm -rf node_modules 
rm -rf /tmp/* 
rm -rf /root/.npm/node-sass 
npm uninstall --save node-sass 
npm cache clean --force 

npm cache verify проверить, что в кеше ничего не осталось

npm install

Хотя я не пытался воспроизвести последовательность, это была комбинация вышеупомянутого, который работал. Кроме того, вы также можете попробовать:

npm install --save node-sass или npm install node-sass -g

npm rebuild node-sass
npm install bindings
Алекс Пандреа
источник
11

* Ответ, связанный с докером здесь *

Ответьте, если вы видите эту проблему, или что-то подобное, и используете Docker.

Причина. При копировании поверх текущей файловой структуры внутрь контейнера Docker, вы можете копировать модули узлов из одной системы ОС в другую (например, контейнер Mac в Linux).

Решение:

Добавьте .dockerignore, а внутри добавьте:

node_modules

Это приведет npm installк установке привязок для среды докера, а не для среды локального компьютера.

farrellw
источник
9

У меня такая же проблема

    throw new Error(errors.missingBinary());
    ^

Error: Missing binding /path/to/project/node_modules/node-sass/vendor/linux-x64-47/binding.node
Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 5.x

Found bindings for the following environments:
  - Linux 64-bit with Node 0.10.x
  - Linux 64-bit with Node.js 5.x

Это потому, что я установил npm, используя другую версию nodejs, попробуйте удалить папку node_modules, установить и запустить

cd your_project
rm -rf node_modules
npm install
npm start or gulp or whatever

Если вы используете NVM сделать

nvm use stable // or your favorite version
// remove node_module directory
npm install
npm start or gulp or whatever
gsalgadotoledo
источник
8

У меня была такая же проблема с Node v7.4.0 Current (последние функции).

Прочитал здесь и понизил Node до версии 6.9.4 LTS, после запуска npm rebuild node-sassзагрузил бинарный файл и все начало работать.

Загрузка двоичного файла с https://github.com/sass/node-sass/releases/download/v3.13.1/win32-x64-48_binding.node
Загрузка завершена.] -:
двоичный файл сохранен в D: \ xxx \ xxx-xxx \ node_modules \ node-sass \ vendor \ win32-x64-48 \ binding.node
Кэширование двоичного файла в C: \ Users \ user \ AppData \ Roaming \ npm-cache \ node-sass \ 3.13.1 \ win32-x64-48_binding.node `

krankuba
источник
7

node-sassМодуль узла использует darwinдвоичный файл, который зависит от версии узла. Эта проблема возникает, если двоичный файл не загружен или загружен неправильный двоичный файл.

Узловая ошибка

Переустановите модули узла, чтобы загрузить ожидаемый двоичный файл узла-sass: -

Для пользователей Mac:

rm -rf node_modules
npm cache clean --force
npm i
npm rebuild node-sass --force

Для пользователей Windows:

rmdir node_modules
npm cache clean --force
npm i
npm rebuild node-sass --force

но для некоторых пользователей вам необходимо проверить совместимость версии вашего узла с версией node-sass. Сделайте его совместимым, используя приведенную ниже таблицу, и снова запустите указанные выше команды, чтобы устранить эту проблему.

Node JS-совместимая версия node-sass

Если проблема все еще не устранена, проверьте список поддерживаемой среды node-sass: - https://github.com/sass/node-sass/releases/

Балрам Сингх
источник
5

Для Visual Studio 2015/2017 щелкните правой кнопкой мыши package.jsonи выберите «Восстановить пакеты».

Это обеспечит запуск npm из внешних инструментов Visual Studio Tools, и привязка будет перестроена на основе этого.

Сивасанкар Сабапатий Сивасунке
источник
Хорошее и простое решение, и единственное, которое сработало из немногих выше, которые я пробовал. Спасибо!
Эли Гассерт
4

Это происходит, когда на вашей рабочей станции вы запускаете обновление Node.js и используете node-sass глобально.

Таким образом, вы должны удалить node-sass глобально

npm uninstall -g node-sass

И тогда вы должны установить его глобально, снова

npm install -g node-sass
Доменико
источник
Хорошее объяснение!
Майкл Чеховски
@ Fay007 не могли бы вы предоставить больше информации? У вас есть ошибка? Дайте мне знать
Доменико
4

Просто обновите кэш npm и:

npm cache clean --force  
npm install

Это всегда работает для меня в одном и том же случае.

UPD: Ваша проблема также может быть из-за отсутствия глобальной sasslib.

npm install -g sass
AlexK
источник
4

Просто запустите комментарий, вот и все.

npm перестроить node-sass

наслаждайся кодированием ...

mahendren
источник
ОП сказал, что попробовал это, и это не сработало. И я тоже, и у меня это тоже не сработало. Вместо этого мне пришлось понизить версию узла, на котором я работал.
Адриан Редгерс
4

В почтовых зависимостей для узла-дерзости являются не получают установлены без package.json внутри узел-Sass

Запуск его вручную решил для меня

node node_modules/node-sass/scripts/install.js 

кредит: ссылка

Mukundhan
источник
Спасибо за это, это решило мою проблему отлично! :)
Льюис Кларк
Рад знать :)
Мукундхан
3

Обычно это происходит потому, что среда изменилась с момента запуска npm install. Запуск npm rebuild node-sassсоздает привязку для текущей среды.

Kisz Na
источник
3

Я пользователь Windows 8, недавно обновил Node до v8.11.1и npm v6.0.0и столкнулся с подобной проблемой. Ничего не сработало - npm install -g node-sass@latestили удаление node-sassкаталога из проектаnode_modules/ - никто из них не работал для меня.

Laravel Mix выдавал ошибку в консоль моего браузера, говоря, что отсутствует узел: win32-x64-57 . Я не знаю, было ли это из-за более медленного интернет-соединения или чего-то другого, узел отсутствовал во время обновления.

Поэтому некоторые ответы заставили меня взглянуть на релизы Node-Sass, и я нашел решение.

  1. Шаг 1: Проверьте свою версию node-sass с помощью команды: npm view node-sass version( {your version}в шаге 4)
  2. Шаг 2: Доберитесь до релизов Node-Sass
  3. Шаг 3. Получите ваш выпуск и найдите отсутствующий узел в ресурсах, перечисленных в каждом выпуске, и загрузите файл
  4. Шаг 4: Доберитесь до своего компьютера C:\Users\{User}\AppData\Roaming\npm-cache\node-sass\{your version}\и поместите загруженный .nodeфайл в папку версии

И вы сделали.

В моем случае версия node-sass была, 4.9.0а отсутствующий узел был win32-x64-57_binding.node, поэтому я скачал .nodeфайл с версии 4.9.0 и выполнил шаг 4.

Mayeenul Ислам
источник
2

Аналогичная ошибка, с которой я столкнулся в Visual Studio 2015 Community Edition при создании приложения AspNetCore:

Node Sass could not find a binding for your current environment: Windows 32-bit with Node.js 5.x
Found bindings for the following environments:
  - Windows 64-bit with Node.js 6.x
This usually happens because your environment has changed since running `npm install`.
Run `npm rebuild node-sass` to build the binding for your current environment.
    at module.exports ([..]\node_modules\node-sass\lib\binding.js:15:13)
    at Object.<anonymous> ([..]\node_modules\node-sass\lib\index.js:14:35)
    at Module._compile (module.js:397:26)
    at Object.Module._extensions..js (module.js:404:10)
    at Module.load (module.js:343:32)
    at Function.Module._load (module.js:300:12)
    at Module.require (module.js:353:17)
    at require (internal/module.js:12:17)
    at Object.<anonymous> ([..]\node_modules\gulp-sass\index.js:187:21)
    at Module._compile (module.js:397:26)

Из приведенной выше ошибки видно, что причина была в несовпадении версий в привязках для nodejs.

Node Sass не смог найти привязку для вашей текущей среды: 32-битная Windows с Node.js 5.x

Найдены привязки для следующих сред: - 64-битная Windows с Node.js 6.x

Решение, которое я нашел, состояло в том, чтобы

  • Установите версию windows nodejs ,
  • Добавить путь для узла js (C: \ Program Files \ nodejs) во Внешних веб-инструментах (см. Ответ Роба Скотта),
  • Переместить путь nodejs выше $ (PATH).
Мэтт Р
источник
2

Это сработало для меня, удалив node_modulesи восстановив пакеты из IDE, а затемnpm rebuild node-sass

Нуман Бхатти
источник
2

У меня была эта проблема при обновлении с VS 2017 Professional до Enterprise

  1. Закрыть VS
  2. Удалить node_modules
  3. Open VS
  4. Щелкните правой кнопкой на package.json и выберите «восстановить пакеты».
dk_french032
источник
2

Ни одно из решений по установке / восстановлению не решило проблему для меня (используя gulp).

Вот как я решил это:

1) Загрузите отсутствующий файл привязки из хранилища .

2) Переименуйте файл binding.node.

3) Создать node_modules/node-sass/vendor/darwin-x64-11(путь из сообщения об ошибке) каталог, если он не существует.

4) Добавьте файл привязки в node_modules/node-sass/vendor/darwin-x64-11

Дон П
источник
2

Пожалуйста, напишите ниже команду в корневой папке.

npm перестроить node-sass

100% работает ...

Йогеш Кумар
источник
2

Если ваш терминал / командная строка говорит:

Узлу Sass не удалось найти привязку 
для вашей текущей среды: 
64-разрядная версия OS X с узлом 0.10.x

и вы пробовали следующие команды, такие как:

очистка кеша npm --force 
модули узла rm -rf 
установка npm 
npm перестроить node-sass 
npm перестроить node-sass

и до сих пор НИЧЕГО не работает ..

Просто запустите это в терминале вручную:

узел node_modules / node-sass / scripts / install.js

сейчас беги

npm start или начало пряжи

Джеки Сантана
источник
1
В заключение! Спасибо. Это единственное решение, сработавшее для меня до сих пор. Я боролся в течение двух дней. Не могли бы вы объяснить, в чем причина?
Бураккал
1
ДА ДА ДА! В заключение! Джеки - Большое спасибо.
user2051552
1

node-sass запускает скрипт установки для загрузки необходимого двоичного файла. Если переменные среды, переменные .npmrc или аргументы процесса не установлены, то двоичный файл определяется с использованием текущей платформы процесса, архитектуры и версии Node ABI. Поэтому, если вы запустите установку узла в одном приложении, а затем попытаетесь запустить node-sass в приложении с другой платформой / архитектурой / ABI, двоичный файл не будет загружен. Решение состоит в том, чтобы вручную загрузить двоичный файл или исправить двоичную версию, используя переменную среды (SASS_BINARY_NAME) или переменную .npmrc (sass_binary_name).

Вы можете увидеть логику для этого в функции getBinaryPath в node-sass \ lib \ extensions.js

Tevin
источник
1

Я была такая же проблема. Я не смог найти здесь правильного рабочего решения, поэтому нашел свое:

Вдохновленный решением @ Rob-Scott и другими указаниями на то, что у нас могут быть установлены 2 версии Node.js, я пришел к C:\Program Files (x86)\nodejsвыводу, что у меня установлена ​​версия node.js в дополнение к установке по умолчанию VS.

Мое решение было довольно простым:

  • Перейдите в Инструменты> Параметры> Проекты и решения> Управление веб-пакетами> Внешние веб-инструменты
  • Нажмите на add an entry(самый левый из верхнего правого блока кнопок)
  • Введите C:\Program Files (x86)\nodejs, подтвердите нажатиемenter
  • Поместите это наверх списка
  • наслаждаться

Вероятно, Node.js плохо настроен в переменной PATH, но это мое очень быстрое решение, мои 2 цента :)

джинсовый
источник
1

Я должен был сначала выбрать новую версию узла по умолчанию nvm use ***или nvm install ***затем удалить все в node_modules в проекте и npm iснова.

obotezat
источник