Отладчик Visual Studio Code NodeJS использует версию, отличную от установленной

VSCode Version:1.8.1
OS Version:Windows 10 x64 and Kali Linux x64

Привет, я пытаюсь создать расширение VSCode, которое использует модуль nodehun https://www.npmjs.com/package/nodehun, который динамически связывает библиотеку hunspell с помощью node-gyp, которую я использую в Windows 10, с помощью узла командной строки:

process.version = 7.4.0 process.arch = x64

Если я попытаюсь использовать методы nodehun вручную с помощью интерфейса командной строки NodeJS, все будет работать нормально, но если я попытаюсь использовать его в extension.js и отладить через Visual Code, у меня будет:

process.version = 6.5.0 process.arch = ia32

Это заставляет меня столкнуться с ошибкой

Ошибка:% 1 не является допустимым приложением win32.

Я действительно не понимаю, как VSCode может использовать версию NodeJS, которую я не установил. Аналогично на Kali linux x64 у меня есть:

process.version = 7.4.0 process.arch = x64

и расширение отладки через VSCode

process.version = 6.5.0 process.arch = x64

которые, по крайней мере, имеют такую ​​же арку, поэтому я сталкиваюсь с ошибкой

Ошибка: несоответствие версии модуля. Ожидали 50, получили 51

это действительно интересно, потому что здесь нет node_module_version = 50, как вы можете видеть здесь, на веб-сайте nodejs:

https://nodejs.org/en/download/releases/

есть только node_module_version 48 для версий 6.x.x и 51 для версий 7.x.x.

Поэтому я попытался перестроить с помощью Windows 10 x64 npm rebuild --target = 6.5.0 --arch = ia32, а затем отладить через VSCode с ошибкой

Ошибка: не удалось выполнить процедуру инициализации библиотеки динамической компоновки (DLL).

И на Kali linux x64 npm rebuild --target = 6.5.0, а затем отладка

Ошибка: несоответствие версии модуля. Ожидал 50, получил 48

Думаю, в настройках отладки может быть хитрость. Мой launch.json выглядит так:

// A launch configuration that launches the extension inside a new window

    {
        "version": "0.1.0",
        "configurations": [
            {
                "name": "Launch Extension",
                "type": "extensionHost",
                "request": "launch",
                "runtimeExecutable": "${execPath}",
                "args": ["--extensionDevelopmentPath=${workspaceRoot}" ],
                "stopOnEntry": false
            },
            {
                "name": "Launch Tests",
                "type": "extensionHost",
                "request": "launch",
                "runtimeExecutable": "${execPath}",
                "args": ["--extensionDevelopmentPath=${workspaceRoot}", "--extensionTestsPath=${workspaceRoot}/test" ],
                "stopOnEntry": false
            }
        ]
    }

Как это возможно, что отладчик VSCode имеет другую версию NodeJS, которую я установил и использую node_module_version = 50? Любые предложения или обходной путь, как я могу заставить его работать?


person Denis    schedule 07.01.2017    source источник


Ответы (2)


VS Code запускает расширения для версии узла, встроенной в электрон. Вы можете использовать модуль electronics-rebuild

 ./electron-rebuild --version="electron_version" --arch="your_vscode_architecture" --which-module="module_name_to_rebuild"

Чтобы собрать свой модуль :)

person Denis    schedule 09.01.2017
comment
Чтобы получить электронную версию и арку, которую использует ваш код vs, выполните vs code -> Help -> About - person ganezdragon; 09.01.2021

У меня также есть эта ошибка с node_module_version=69 при использовании node_pty.

Точно так же node_module_version = 50 также является версией электрона. Вам просто нужно посмотреть информацию о версии вашего текущего vscode, найти соответствующий номер электронной версии, а затем скомпилировать его с его номером версии. Вы можете обратиться к следующей команде:

set npm_config_disturl="https://atom.io/download/electron"
set npm_config_target=4.0.4
set npm_config_runtime="electron"
set npm_config_cache=~\.npm-electron
npm i
endlocal
person roguexiaohuihui    schedule 13.11.2019