2014-10-16 5 views
1

Я новичок с nodejs.zepto module in nodejs не найден

Я установил глобально модули зепто и jsdom:

npm install jsdom -g 
npm install zepto -g 

я проверил с npm list -g. Эти модули установлены.

Но когда я ссылаться на эти два модуля в сценарии с использованием требуют:

var jsdom = require("jsdom"); 
var Zepto = require("zepto"); 

Я получил сообщение об ошибке:

Error: Cannot find module 'zepto' 
at Function.Module._resolveFilename (module.js:338:15) 
at Function.Module._load (module.js:280:25) 
at Module.require (module.js:364:17) 
at require (module.js:380:17) 
at Object.<anonymous> (/home/user554/dev/exchange/bin/getExchangeData.js:6:13) 
at Module._compile (module.js:456:26) 
at Object.Module._extensions..js (module.js:474:10) 
at Module.load (module.js:356:32) 
at Function.Module._load (module.js:312:12) 
at Function.Module.runMain (module.js:497:10) 

я попробовал только jsdom и только зепто. Только Zepto терпит неудачу.

Что мне не хватает? Спасибо за помощь.

+2

Чтобы 'require()' модуль, установите его [локально] (http://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders). Глобальные пакеты предназначены только для использования из командной строки. Если вам нужны оба варианта использования, вам нужно будет установить его в обоих местах. Документы: ['npm-folders'] (https://www.npmjs.org/doc/files/npm-folders.html). –

+0

Спасибо, но это не похоже на мою потребность. Я хочу использовать node.js во многих сценариях с одинаковыми модулями. Поэтому безумно поддерживать множество копий одинаковых файлов. –

+0

Локализованные установки, как правило, зависят от версии только от модуля в целом. NPM устанавливает только одну версию модуля по заданному пути. Используя глобальный модуль в каждом приложении, вам может потребоваться сразу изменить все приложения, чтобы поддерживать обновление модуля, или иметь возможность удержаться, даже если один из них просто не может поддерживать обновление. –

ответ

1

Пакет zepto не является надлежащим пакетом узлов. Он устанавливает мини-версию Zepto lib, но похоже, что она предназначена для использования в браузере (почему это было в репозитории NPM? Я понятия не имею).

Вместо этого попробуйте пакет zepto-node.

+0

Просто чтобы удовлетворить мое любопытство, откуда вы знаете, что это не правильный пакет узлов? –

+0

Благодарим вас за помощь. Он отлично работает! –

+0

Потому что он не загружается;) Но более серьезно: файл 'package.json' не имеет свойства' main', которое используется для указания точки входа, которая загружается, когда вы «требуете» модуль. – robertklep

0

Настоящая проблема заключается в том, что вы устанавливаете глобально. Установка с помощью -g предназначена только для модулей, которые предоставляют какие-то сценарии командной строки (например, express-generator предоставляет команду express, которую вы можете использовать из командной строки).

Как правило, вы устанавливаете модуль без -g, и он будет установлен локально, и вы можете require() это просто отлично. Однако, как указал @robertklep, модуль zepto в настоящее время does not export anything (отсутствует «lib» в package.json), поэтому локальная установка не помогла бы для этого конкретного модуля.

+0

Он может загрузить 'jsdom' (который * также * установлен в глобальном масштабе) просто отлично, так что это не проблема. Установка пакета 'zepto' локально также не устраняет проблему. – robertklep

+0

Благодарим вас за ответ, но это не соответствует моей потребности установить его локально. Многие скрипты с одинаковыми модулями.Вот почему я использую глобально установленные модули и NODE_PATH. –

+0

Что касается 'jsdom', то я предполагаю, что они ранее были установлены без' -g', или они использовали 'npm link', ни один из которых они не использовали в исходном вопросе. – mscdex

Смежные вопросы