Escribí un módulo que publiqué en npm hace un momento (https://npmjs.org/package/wisp)
Entonces se instala bien desde la línea de comando:
$ npm i -g wisp
Sin embargo, cuando lo ejecuto desde la línea de comandos, sigo recibiendo un error de que optimist no está instalado:
$ 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)
Sin embargo, he especificado en package.json como una dependencia:
{
"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"
}
}
¿Alguien sabe qué hacer para que esto funcione? Sé que tiene que ver con la parte bin agregando el ejecutable a bin y los node_modules en ese directorio están vacíos. No tengo idea de cómo resolver esto.
./node_modules/wisp/wisp
que funciona bien.Respuestas:
Para cualquier otra persona que se encuentre con esto, tuve este problema debido a mi
npm
instalación en una ubicación que no está en miNODE_PATH
.Mi NODE_PATH estaba vacío y la ejecución
npm install --global --verbose promised-io
mostró que se estaba instalando en/opt/lib/node_modules/promised-io
:Mi script falla en
require('promised-io/promise')
:Probablemente instalé node y npm desde la fuente usando
configure --prefix=/opt
. No tengo idea de por qué esto los ha hecho incapaces de encontrar los módulos instalados. La solución por ahora es apuntar NODE_PATH al directorio correcto:Mi
require('promised-io/promise')
ahora tiene éxito.fuente
export NODE_PATH=...
configurarlo en el shell local para que se exportara a los comandos que se ejecutan en ese shell. Para que el cambio sea persistente o esté disponible para todos los shells, colóquelo en .profile o similar. El concepto en su conjunto es molestamente complejo para el novato, intente leer help.ubuntu.com/community/EnvironmentVariables . Para Windows, querrás cambiar a Linux. OK, solo bromeaba. Pruebe computerhope.com/issues/ch000549.htm o busque en google.open -a TextEdit ~/.bash_profile
en Terminal, luego agregueexport NODE_PATH=/usr/local/lib/node_modules
al final del archivo. Reinicie la ventana de terminal. Ahora seecho $NODE_PATH
debe imprimir/usr/local/lib/node_modules
.agregue esto al comienzo del programa (mac):
module.paths.push('/usr/local/lib/node_modules');
fuente
os.environ.nodepath
(algo en esta línea).Por defecto, el nodo no mira dentro del / usr / local / lib / node_module para cargar módulos globales. Consulte la carga del módulo explicada en http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders
Por lo tanto, debe 1) agregar el / usr / local / lib / node_module a NODE_PATH y exportarlo o 2) copiar los módulos de nodo instalados en / usr / local / lib / node. (Como se explica en el enlace para cargar el nodo del módulo, buscará en esta ruta y funcionará)
fuente
Para algunos (como yo) que nada más funcionó, intente esto:
Espero que ayude a alguien :)
fuente
La siguiente solución genérica sería para cualquier módulo. Por ejemplo con
request-promise
.Reemplazar
Con
trabajado ( fuente ) y también para
globals
yinherits
Además, intente configurar la variable de entorno
fuente
Recibí el error del módulo "optimista" y simplemente hice "npm install" para resolverlo. Pasó ese error.
https://github.com/mbloch/mapshaper/issues/12
fuente
$ vim /etc/profile.d/nodejs.sh
fuente
Para Windows, ¿ Nodejs no puede encontrar el módulo instalado en Windows? lo que funcionó para mí está ejecutando enlace npm como en
fuente
npm install wisp --save
(sin la opción -g)Para usuarios de Mac, es mejor usar la instalación manual:
Referencia: https://docs.npmjs.com/getting-started/fixing-npm-permissions
fuente
Tenía el mismo problema en uno de los servidores de prueba que se ejecutan
Ubuntu
bajoroot
. Entonces creado un nuevo usuario usandouseradd -m myuser
y todo instalado (nvm
,node
, paquetes) comomyuser
. Ahora está funcionando bien.fuente
En Windows, si acaba de realizar una instalación limpia y obtiene esto, debe eliminar su caché npm en \ AppData \ Roaming
fuente
En mi caso ambos
node
ynpm
estábamos en el mismo camino (/usr/bin
). ElNODE_PATH
estaba vacío, por lo que lanpm
coloca los módulos globales en/usr/lib/node_modules
donderequire(...)
encontrará con éxito. La única excepción fue elnpm
módulo, que vino con el paquete nodejs. Como estoy usando un sistema de 64 bits, se colocó en/usr/lib64/node_modules
. Aquí no es donde se requieren (...) búsquedas en caso de vacíoNODE_PATH
y el nodo comenzó desde/usr/bin
. Entonces tenía dos opciones:/usr/lib64/node_modules/npm
a/usr/lib/node_modules/npm
/usr/lib/node_modules/*
a/usr/lib64/node_modules/
y conjuntoNODE_PATH=/usr/lib64/node_modules
Ambos trabajaron. Estoy usando OpenSUSE 42.1 y el paquete nodejs del repositorio de actualizaciones. La versión es 4.4.5.
fuente
Hice esto de manera simple ...
npm install --global --verbose protractor
administrador de controladores web de actualización de transportador .
funciona bien para mi
Espero que esto te ayude....
fuente
Obtuve este error
Error: Cannot find module 'number-is-nan'
mientras que el módulo realmente existe. Se debió a una instalación de Node.js incorrecta / incompleta.Para Windows, como lo sugieren otras respuestas, necesita una instalación limpia de Node :
npm
ynpm_cache
enC:\Users\user\AppData\Roaming
npm init
o (npm init --yes
para la configuración predeterminada )NODE_PATH
. Esta ruta es donde están instalados sus paquetes. Probablemente sea algo comoNODE_PATH = C:\Users\user\node_modules or C:\Users\user\AppData\Roaming\npm\node_modules
npm
debería funcionar bienNota :
Pruebe los últimos puntos antes de reinstalar Node.js, podría ahorrarle algo de tiempo y evitar reinstalar todos sus paquetes.
fuente
Acabo de resolver este problema del
axios
módulo. Luego probé esto: ejecutarrm -rf node_modules
yyarn
. Y funciona.fuente
Tuve el mismo error que el OP, pero pude ver a través de los registros
sh: node: command not found
.Resulta que el programa / usr / bin / node (enlace simbólico) ya no está instalado con
apt install nodejs
. Una vez que el enlace simbólico/usr/bin/node' to
nodejs,
npm instaló -g @ angular / cli` tuvo éxito.La forma correcta de instalar esto en Debian es
apt install nodejs-legacy
.fuente
Tuve que agregar C: \ Users \ {Nombre de usuario} \ AppData \ Roaming \ npm a mis variables env y luego pude instalar cosas.
fuente