NVM (для Windows) не видит локальные исполняемые скрипты

У многих людей есть эта проблема, но она всегда начинается с "Я установил NVM для Windows, и теперь NPM не работает". Это не моя проблема. NPM работает нормально. Моя проблема связана с установкой пакетов, но я должен добавить к этому префикс, сказав, что я новичок в npm, git и т. Д., Поэтому я могу чего-то упустить.

Мне передали проект DOMO, и мне было поручено установить этот пакет ryuu в локальный каталог node_modules приложения, но мне нужно использовать NVM для переключения между версиями узла (не уверен, что это их требование или лучшая практика, похоже, последний). Тем не менее, я устанавливаю NVM и устанавливаю версию узла, требуемую файлом.nvmrc, и когда я перехожу к установке пакета ryuu, он загружается локально в каталог node_modules, как и ожидалось.

Проблема в том, когда я запускаю domo login команда - 'domo' is not recognized. Тем не менее, я могу видеть исполняемый скрипт в локальном каталоге приложения node_modules/.bin. Тем не менее, когда я устанавливаю пакет глобально, он устанавливается в appdata/roaming/nvm/<node version>/node_modules и когда я запускаю команду domo login, Я получаю сообщение:

[ERROR] The domo cli tool has experienced an error. As it is
[ERROR] possible this bug has already been fixed, please try updating
[ERROR] using `npm install -g ryuu` and run this command again. If this
[ERROR] does not fix the issue, please contact your MajorDomo.
[ERROR] error message: Unexpected token {

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

Когда я бегу npm root Я вижу, что он указывает на локальный каталог node_modules, но когда я запускаю nvm rootон указывает на путь appdata/roaming. Мое лучшее предположение состоит в том, что NVM ищет не в том месте (глобальном) для выполнения (локального) скрипта domo, но я не уверен, как изменить этот путь.

Я посмотрел на переменные среды, и есть одна, указывающая на каталог nodejs в C:/Program Files, но это символическая ссылка для текущей версии node, которую использует NVM, и она возвращается прямо в каталог appData/Roaming, который я понять, как это * должно работать. Я также считаю, что именно поэтому я могу выполнять глобально установленные пакеты, но не локальные, и почему NPM работает (потому что он установлен глобально).

Итак, как мне сказать NVM искать в локальном каталоге node_modules приложения, а не в глобальном, или этого нельзя сделать? Я читал, что NVM для Windows - это не то же самое, что NVM, так что это может быть одним из тех отличий в том, как он работает?

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

Если вы cd в локальный каталог приложения, то в терминале вы можете запустить любую команду скрипта, выполнив

node_modules/.bin/<scriptname> command

1 ответ

Чтобы избежать проблем с разными версиями узла и разными операционными системами, рекомендуемый подход к использованию интерфейса командной строки приложений domo заключается в загрузке исполняемых файлов вместо сценариев узла. Для окон вы можете просто использовать шоколадный. Для Mac вы можете использовать Homebrew: https://developer.domo.com/docs/dev-studio/set-up#Windows

Шоколадная командаchoco install domo.

Команда доморощенногоbrew install DomoApps/ryuu/domo.

Вы по-прежнему можете установить через npm, если хотите использовать канареечные/бета-сборки, но использование этих исполняемых файлов более стабильно в разных средах.

Другие вопросы по тегам