2014-12-16 3 views
1

У меня есть файл server.js, который я загрузил с чужого сайта. Первая строка: var express = require ('express');node.js требует функции, не находящейся в модуле

Когда я пытаюсь запустить этот сервер с «node server.js», я получаю следующую ошибку: «Не удается найти модуль« экспресс ».» Экспресс-модуль установлен в узле по умолчанию установить местоположение:

C: \ Users \ MyName \ node_modules \ экспресс \

Я могу успешно запустить экспресс, выполнив «узел express.js» от экспресс установить местоположение в node_modules. Я также попытался скопировать папку экспресс и файл в каталог c: \ node-testing \, где находится файл server.js, но я все еще получаю ошибку. Любая идея, что может быть проблемой и как исправить?

ответ

1

Вы можете установить переменную среды NODE_PATH, чтобы сообщить nodejs о поиске других путей для модулей, установленных на глобальном уровне, которые не находятся в каталоге проекта.

Для получения более подробной информации см. http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders.

В установках Unix есть встроенные местоположения по умолчанию, но в Windows вы должны установить эту переменную среды вручную для поддержки глобального местоположения.


FYI, если вы хотите потребовать, чтобы загрузить модуль из директории проекта, то вы должны использовать

require("./filename"); 

с ./ перед ним. Вот почему это не сработало, когда вы скопировали его в каталог проекта. узел делает различие между загрузкой из каталога проекта и загрузкой из каталога node_modules ниже и, следовательно, требует другого синтаксиса, чтобы указать, какой из них вы хотите. Express.js также не является автономным модулем, потому что он зависит от множества других модулей, поэтому вы не можете копировать только его. Я бы порекомендовал использовать опцию NODE_PATH или установить экспресс в каталог проекта (он будет в подкаталоге node_modules).

1

Node.js будет искать только модули из текущих (и родительских) каталогов. В отличие от npm, Node не имеет понятия «глобальных» модулей.

Чтобы установить модули в каталог, содержащий код, вам необходимо запустить npm install.

+0

Это не совсем правильно. Вам не нужно устанавливать свои узловые модули в директорию вашего приложения. Когда будут установлены нужные переменные envirionment, узел будет выглядеть в других местах (как и в Linux). – jfriend00

+0

Подробная информация о том, как загрузить из других мест: http://nodejs.org/api/modules.html#modules_loading_from_the_global_folders – jfriend00

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