Подтвердить что ты не робот

NPM - Не удается установить socket.IO

Я пытаюсь установить socket.io на windows с npm для использования на сервере nodeJS.

Во-первых, когда я набрал "npm install socket.IO", в журнале произошла ошибка, говорящая о python и node -gyp. Я установил python 2.7.3 и установил переменные среды.

Теперь у меня появилась новая ошибка, которая имеет какое-то отношение к визуальной студии (что, черт возьми, VS имеет отношение к npm? Это о компиляторе?).

Ошибка такая же, как здесь npm install для некоторых пакетов (sqlite3, socket.io) сбой с ошибкой MSB8020 в Windows 7 Но когда я использую этот вариант в ответе вместо ошибки, он сообщает мне о возможной потере данных (c4267), но не записывает никаких ошибок.

Затем, когда я запускаю свое приложение, он говорит мне, что не могу найти модуль socket.io еще Что это может произойти?

О, а также когда я делаю npm config get root, он говорит мне, что "undefined" может ли это иметь какое-либо отношение к нему? Должен ли я устанавливать модули глобально или локально?

4b9b3361

Ответ 1

По крайней мере один из пакетов в дереве зависимостей Socket.IO представляет собой C/С++ addons, который необходимо скомпилировать в вашей системе, поскольку он установлен. И, поскольку это зависимость, если она не удастся установить, ни Socket.IO не будет.

Чтобы включить кросс-системную компиляцию, Node.js использует node-gyp в качестве своей системы сборки. Вам нужно будет установить его как глобальный пакет:

npm install -g node-gyp

Кроме того,

Ответ 2

У меня была аналогичная проблема на Mac. Я решил, что проблема заключается в установке немного более старой версии Socket.io.

Я сделал:

npm install socket.io @ "~ 0.8.1"

который установил бы последнюю версию от 0.8.0 до 0.8.9, но не 0.9.0 или выше.

Socket.io затем устанавливается отлично.

Ответ 3

Убедитесь, что у вас есть все необходимое программное обеспечение для запуска node-gyp:

Вы можете настроить версию Visual Studio, используемую gyp, с помощью переменной среды, чтобы избежать необходимости устанавливать свойство --msvs_version=2012.

Примеры:

  • set GYP_MSVS_VERSION=2012 для Visual Studio 2012
  • set GYP_MSVS_VERSION=2013e ( "e" означает "экспресс-выпуск" )

Полный список см. в разделе  - https://github.com/joyent/node/blob/v0.10.29/tools/gyp/pylib/gyp/MSVSVersion.py#L209-294

Это все еще больно для пользователей Windows из NodeJS, поскольку предполагает, что у вас есть установленная копия Visual Studio, и у многих конечных пользователей этого никогда не будет. Поэтому я лоббирую Joyent, чтобы побудить их включать веб-сокеты как часть CORE node, а также для возможного отправки компилятора GNU gcc в составе установки NodeJS, чтобы мы могли надолго исправить эту проблему.

Не стесняйтесь добавить свой голос:

Ответ 4

Проблема, вызвавшая сбой компиляции, заключается в том, что модуль ws, установленный модулем engine.io, требуемый socket.io, вытягивает версию nan. Подробнее см. https://github.com/BrowserSync/grunt-browser-sync/issues/95. Чтобы обойти проблему после сбоя сборки:

  • cd to node_modules/socket.io/node_modules/engine.io/node_modules/ws
  • изменить package.json, чтобы изменить выпуск nan с 1.4.x до 1.6.0
  • команда выдачи node -gyp rebuild

Теперь вы можете использовать socket.io

Ответ 5

эта проблема меня очень беспокоит.. Я пробовал много решений.

Я установил SDK.NET Framework 2.0.

Я установил Python 2.7.x

Я установил VS 2012 Express

Я устанавливаю несколько путей

Я выполнил npm install xxx с аргументом --msvs_version=2010(or 2012/2013..)...

Но все не удалось.

Наконец, я удалил Python и .NET Framework 2.0 SDK и VS 2012, очистил эти пути, включить Центр обновления Windows, установить все необходимые обновления, перезагрузить компьютер

затем выполните команды ниже: npm install node-gyp -g npm install socket.io -g npm install browser-sync -g

в журналах установки ошибок нет.

Примечание: это решение может не сработать для вас, но для меня

Ответ 6

Другой подход - использовать Docker для Windows и развернуть среду NodeJS. Во время разработки вы можете смонтировать свой Node код как топор Docker, и поэтому продолжайте обновлять свой код из Windows, но выполняйте его и устанавливайте его в виртуальной машине Linux. При развертывании вы, возможно, предпочтете использовать файл Docker, который КОПИРУЕТ ваш код Node, в ваш образ Docker и, таким образом, превратит его в созданный вами образ выпуска.

Этот подход может потребоваться, если вы не хотите рисковать изменять версию socket.io вашего кода или его зависимостей.

Это также может быть ценным решением, если вы планируете развертывать корпоративную интрасеть или публичное/частное облако.

Docker также может быть очень удобен для тестирования развертывания в разных версиях Node без нарушения среды разработки вашего компьютера Windows (например, для тестирования библиотеки NodeJS).