2011-06-24 12 views
8

siento que me falta algo de muy básico aquí ...ayuda que requiere un módulo de NPM en Node.js

Así que instalar una biblioteca de NPM con npm install somelib. Y por lo que he leído yo debería entonces ser capaz de simplemente hacer una

var somelib = require('somelib'); 

Pero no encuentra nada. Tengo un directorio node_modules en la raíz de mi aplicación, pero parece que no lo recoge.

Intenté require.paths.push('node_modules') pero no ayuda. Lo único que parece funcionar es la siguiente:

require.paths.unshift('.'); 
var somelib = require('node_modules/somelib/lib/somelib'); 

que me hace sentir como esto es mucho más trabajo de lo que realmente se necesita hacer para cargar una biblioteca de NPM. ¿Qué estoy haciendo mal aquí? Pensé que la instalación de módulos en la aplicación significaba que no tenía que trabajar mucho con variables de entorno o rutas.

+0

¿qué estás intentando instalar? ¿Qué plataforma? – tjameson

+0

Sí, tienes razón. Tu primer ejemplo es cómo debería funcionar. ¿Estás usando npm 1.0? – Magnar

+1

Es posible que un paquete 'somelib' no tenga un archivo llamado' somelib'. También es posible que la instalación esté mal configurada. – Amadan

Respuesta

1

Tener el nombre del módulo específico en lugar de "somelib" podría ayudar ... pero verifique el archivo package.json del paquete. Muestre require.paths y compare. Lea sobre la module system

4

Es posible que somelib no tiene un archivo main define en su package.json o que se hace referencia de forma incorrecta nodo. Si somelib no tiene un main pero tiene un directories.lib, entonces puede hacer require('somelib/thefile.js') en su lugar.

Si somelib está escrito en coffeescript y su aplicación no lo está, primero necesitará require('coffee-script').

Actualización: como js2coffee es coffeescript, voy con usted necesita hacer esto último.

+0

¿Está bien solicitar todos los módulos npm en un único servidor? js file ... o tenemos que crear archivos separados ... ¿cuál es la mejor práctica? :) –

Cuestiones relacionadas