Napisałem moduł, który przed chwilą opublikowałem npm (https://npmjs.org/package/wisp)
Więc instaluje się dobrze z linii poleceń:
$ npm i -g wisp
Jednak po uruchomieniu go z wiersza poleceń pojawia się błąd, że optymista nie jest zainstalowany:
$ wisp
Error: Cannot find module 'optimist'
at Function.Module._resolveFilename (module.js:338:15)
at Function.Module._load (module.js:280:25)
at Module.require (module.js:362:17)
at require (module.js:378:17)
at Object.<anonymous> (/usr/local/lib/node_modules/wisp/wisp:12:10)
at Object.<anonymous> (/usr/local/lib/node_modules/wisp/wisp:96:4)
at Module._compile (module.js:449:26)
at Object.exports.run (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/coffee-script.js:68:25)
at compileScript (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:135:29)
at fs.stat.notSources.(anonymous function) (/usr/local/lib/node_modules/coffee-script/lib/coffee-script/command.js:110:18)
Podałem jednak w pakiecie.json jako zależność:
{
"name": "wisp",
"author": "Brendan Scarvell <[email protected]>",
"version": "0.1.0",
"description": "Global nodejs file server",
"dependencies": {
"optimist": "~0.3.4"
},
"repository": "git://github.com/tehlulz/wisp",
"bin": {
"wisp" : "./wisp"
}
}
Czy ktoś wie, co zrobić, aby uruchomić to? Wiem, że ma to związek z tym, że część bin dodaje plik wykonywalny do bin, a moduły node_module w tym katalogu są puste. Nie mam pojęcia, jak to rozwiązać.
./node_modules/wisp/wisp
co działa dobrze.Odpowiedzi:
Dla każdego, kto na to wpadł, miałem ten problem z powodu
npm
instalacji w miejscu, którego nie ma na mojej stronieNODE_PATH
.Moja NODE_PATH była pusta, a uruchomienie
npm install --global --verbose promised-io
pokazało, że instaluje się w/opt/lib/node_modules/promised-io
:Mój skrypt nie działa
require('promised-io/promise')
:Prawdopodobnie zainstalowałem węzeł i npm ze źródła za pomocą
configure --prefix=/opt
. Nie mam pojęcia, dlaczego to uniemożliwiło im znalezienie zainstalowanych modułów. Na razie poprawka polega na wskazaniu NODE_PATH we właściwym katalogu:Mój
require('promised-io/promise')
teraz się udaje.źródło
export NODE_PATH=...
ustawiłem go w lokalnej powłoce, tak aby był eksportowany do poleceń uruchamianych w tej powłoce. Aby zmiana była trwała lub dostępna dla wszystkich powłok, umieść ją w .profile lub podobnym. Koncepcja jako całość jest irytująco złożona dla początkujących, spróbuj przeczytać help.ubuntu.com/community/EnvironmentVariables . W systemie Windows chcesz przełączyć się na system Linux. OK, tylko żartuję. Spróbuj computerhope.com/issues/ch000549.htm lub google go.open -a TextEdit ~/.bash_profile
w Terminalu, a następnie dodajexport NODE_PATH=/usr/local/lib/node_modules
na końcu pliku. Uruchom ponownie okno terminalu. Teraz uruchomionyecho $NODE_PATH
powinien wydrukować/usr/local/lib/node_modules
.dodaj to na początku prog (mac):
module.paths.push('/usr/local/lib/node_modules');
źródło
os.environ.nodepath
(coś wzdłuż tych linii).Domyślnie węzeł nie zagląda do / usr / local / lib / node_module pod kątem ładowania modułów globalnych. Zobacz ładowanie modułu wyjaśnione w http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
Musisz więc 1) dodać / usr / local / lib / node_module do NODE_PATH i wyeksportować go lub 2) skopiować zainstalowane moduły węzła do / usr / local / lib / node. (Jak wyjaśniono w linku do ładowania modułu węzeł przeszuka tę ścieżkę i będzie działać)
źródło
W przypadku niektórych (jak ja), że nic innego nie działa, spróbuj tego:
Mam nadzieję, że to komuś pomoże :)
źródło
Poniższa poprawka ogólna byłaby dla każdego modułu. Na przykład z
request-promise
.Zastąpić
Z
pracował ( źródło ), a także dla
globals
iinherits
Spróbuj także ustawić zmienną środowiskową
źródło
Dostałem błąd modułu „optymistycznego” i właśnie wykonałem „npm install”, aby go rozwiązać. minął ten błąd.
https://github.com/mbloch/mapshaper/issues/12
źródło
$ vim /etc/profile.d/nodejs.sh
źródło
W przypadku systemu Windows Nodejs nie może znaleźć zainstalowanego modułu w systemie Windows? to, co zadziałało, to działające łącze npm jak w
źródło
npm install wisp --save
(bez opcji -g)Dla użytkowników komputerów Mac Najlepiej skorzystać z instalacji ręcznej:
Odniesienie: https://docs.npmjs.com/getting-started/fixing-npm-permissions
źródło
Miałem ten sam problem na jednym z serwerów testowych działających
Ubuntu
podroot
. Następnie stworzył nowego użytkownika używającuseradd -m myuser
i zainstalowane wszystko (nvm
,node
pakiety), jakmyuser
. Teraz działa dobrze.źródło
W systemie Windows, jeśli właśnie wykonałeś czystą instalację, a otrzymasz to, musisz zdmuchnąć swoją pamięć podręczną npm w \ AppData \ Roaming
źródło
W moim przypadku zarówno
node
inpm
były w tej samej ścieżce (/usr/bin
).NODE_PATH
Był pusty, więcnpm
umieszczony globalnych modułów w/usr/lib/node_modules
którymrequire(...)
z powodzeniem je znaleźć. Jedynym wyjątkiem byłnpm
moduł dostarczany z pakietem nodejs. Ponieważ używam systemu 64-bitowego, został on umieszczony w/usr/lib64/node_modules
. To nie jest miejsce, w którym wymagane są (...) wyszukiwania w przypadku pustychNODE_PATH
i rozpoczynania węzła/usr/bin
. Miałem więc dwie opcje:/usr/lib64/node_modules/npm
do/usr/lib/node_modules/npm
/usr/lib/node_modules/*
do/usr/lib64/node_modules/
i ustawNODE_PATH=/usr/lib64/node_modules
Oba działały. Używam OpenSUSE 42.1 i pakietu nodejs z repozytorium aktualizacji. Wersja to 4.4.5.
źródło
Zrobiłem to w prosty sposób ...
npm install --global --verbose protractor
Zaktualizuj menedżera sterowników internetowych.
działa dobrze dla mnie.
Mam nadzieję, że to pomoże ci ....
źródło
Wystąpił ten błąd,
Error: Cannot find module 'number-is-nan'
podczas gdy moduł faktycznie istnieje. Było to spowodowane nieprawidłową / niekompletną instalacją Node.js.W przypadku systemu Windows, jak sugerują inne odpowiedzi, potrzebujesz czystej instalacji węzła :
npm
inpm_cache
weC:\Users\user\AppData\Roaming
npm init
lub (npm init --yes
dla domyślnej konfiguracji )NODE_PATH
. W tej ścieżce są zainstalowane Twoje pakiety. To chyba coś w styluNODE_PATH = C:\Users\user\node_modules or C:\Users\user\AppData\Roaming\npm\node_modules
npm
powinna działać poprawnieUwaga :
Wypróbuj ostatnie punkty przed ponowną instalacją Node.js, może to zaoszczędzić trochę czasu i uniknąć ponownej instalacji wszystkich pakietów.
źródło
Właśnie spotkałem ten problem
axios
modułu. Potem spróbowałem: uruchomrm -rf node_modules
iyarn
. I to działa.źródło
Miałem ten sam błąd co OP, ale przeglądałem dzienniki, które widziałem
sh: node: command not found
.Okazuje się, że program / usr / bin / node (symlink) nie jest już instalowany z
apt install nodejs
. Raz/usr/bin/node' to
symlinkowane nodejs,
npm install -g @ angular / cli` powiodło się.Właściwym sposobem zainstalowania tego na Debianie jest
apt install nodejs-legacy
.źródło
Musiałem dodać C: \ Users \ {Nazwa użytkownika} \ AppData \ Roaming \ npm do moich zmiennych env, a następnie mogłem zainstalować różne rzeczy.
źródło