У меня проблемы с получением npm или пряжи для запуска сценариев, которые используют двоичные файлы node_modules в Windows 10.
Вот базовый пакет c. json, который воспроизводит проблему для me:
{
"name": "repro",
"version": "1.0.0",
"main": "index.js",
"license": "MIT",
"devDependencies": {
"electron": "^8.0.0"
},
"scripts": {
"fails": "electron",
"works": "npx electron"
}
}
Если я запускаю yarn works
или npm run works
, открывается приложение по умолчанию для электронов. Это показывает, что npx может найти приложение и что электрон был успешно установлен в локальные модули node_modules. Но если я запускаю скрипт fails
под npm или пряжей, я получаю ошибку 'electron' is not recognized as an internal or external command,
Все, что я прочитал, указывает, что пряжа и npm должны добавить node_modules/.bin
к пути перед запуском сценариев, и действительно, если я посмотрю журнал ошибок, сгенерированный npm run start, он содержит следующую строку:
8 verbose lifecycle repro@1.0.0~fails: PATH: C:\Program Files\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;C:\Users\dusty\Beanstalk\repro\node_modules\.bin;C:\Users\dusty\AppData\Roaming\npm;C:\Program Files\nodejs\;C:\Python27\;C:\Python27\Scripts;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files\Git\cmd;C:\Program Files\nodejs\;C:\ProgramData\chocolatey\bin;C:\Users\dusty\.cargo\bin;C:\Users\dusty\AppData\Local\Microsoft\WindowsApps;C:\Users\dusty\AppData\Local\Programs\Microsoft VS Code\bin;C:\Users\dusty\AppData\Roaming\npm
В частности, C:\Users\dusty\Beanstalk\repro\node_modules\.bin
находится в именованном пути.
Я пытался запустить это под powershell, cmd и git - bash с одинаковыми результатами как в их собственных терминалах, так и в коде Visual Studio. Я пробовал стабильную и LTS версии узла. Я попытался установить узел с официального установщика MSI, а также через Chocolatey. Я даже пытался добавить мой каталог node_modules/.bin
в переменную среды PATH.
Запуск ./node_modules/electron/cli.js -v
вызывает окно предупреждения из "Windows Хост скрипта":
Script: C:\Users\dusty\Beanstalk\repro\node_modules\electron\cli.js
Line: 1
Char: 1
Error: Invalid character
Code: 800A03F6
Source: Microsoft JScript compilation error
Однако node ./node_modules/electron/cli.js -v
работает нормально и выводит v8.0.0
, как и ./node_modules/.bin/electron.cmd -v . But
. / Node_modules / .bin / Electron -v gives a "running scripts is disabled on this system" error. I temporarily fixed the latter with
Set-ExecutionPolicy -ExecutionPolicy Unrestricted -Scope CurrentUser. Unfortunately,
npm запустить не удалось still cannot find the
команда электрона после этого.
Я попытался запустить тот же пакет. json под другой учетной записью пользователя на том же компьютере, и все работало безупречно. Это говорит о том, что с моей средой что-то не так, но я не могу себе представить, что.
Я подозреваю, что этой информации недостаточно, поэтому, пожалуйста, дайте мне знать, что еще я могу предоставить. Исторически я пользователь Linux и не очень знаком с экосистемой Windows. Это мешает мне запустить даже элементарный электронный справочник, и я уверен, что это просто базовая c проблема конфигурации.