Эта проблема поднималась несколько раз, и я перепробовал все предложенные решения, но ничего не помогло.
У меня есть собственный модуль в расширении кода VS. Это очень хорошо работает на Linux + Mac, но я не могу загрузить его в Windows 10. Каждый раз, когда расширение активируется и пытается загрузить собственный модуль, я получаю эту ошибку. Что делает это таким странным, так это то, что собственный модуль прекрасно работает в сеансе узла (в командной строке Win). Я проверил, какую версию NodeJS использует Visual Studio Code, и установил именно эту версию (x86, поскольку vscode все еще 32-битный). Я сделал npm install npm -g
, запустил npm rebuild
, а также обычный node-gyp rebuild
в моей папке расширения (или в папке модуля узла для node-gyp). Каждый раз модуль строится нормально и работает в сеансе узла. Тем не менее я не могу заставить его работать в vscode. Поэтому я считаю, что это должно быть связано с приложением vscode в Windows, просто не знаю, что это такое. Для компиляции я пробовал как VS 2013, так и VS 2015.
Интересно также то, как node-gyp компилирует нативный модуль в Windows. Похоже, что он использует ряд хаков, например. скомпилированный модуль сильно аварийно завершает работу при использовании std::throw_with_nested
(функция C++11). Еще одна проблема — это файл win_delay_load_hook.cc, который содержит хак, позволяющий заставить работать какую-то странную ситуацию (эта инициализация не работает в Win 10, поэтому мне пришлось ее отключить, это общая проблема инициализации DLL, не связанная с инициализацией vscode). Так что вполне может быть, что это просто node-gyp на Win10, который вызывает все проблемы. Тем не менее, как я уже писал, собственный модуль прекрасно работает в сеансе узла.
Что еще я могу сделать, чтобы узнать, в чем именно проблема? Есть ли файл журнала, который точно показывает, почему регистрация неверна? Есть ли проблема с vscode вообще в Windows 10?