Клуб API Карт

Заголовок не указан

dmitry-krylov51
14 мая 2014, 14:54

Пробую геокодирование с помощью Node.js-модуля multi-geocoder.

При запуске примера выдает сообщение

$ ./index.js
/usr/bin/env: node: Нет такого файла или каталога

 

Изменил первую строчку index.js на

#!/usr/bin/env nodejs

 

после этого выдал другую ошибку:

$ ./index.js

module.js:340
    throw err;
          ^
Error: Cannot find module 'Vow'
    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> (/media/Misc/Addresses/node/node_modules/multi-geocoder/lib/multi-geocoder.js:1:73)
    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 Module.require (module.js:364:17)

 

В каталоге установленного модуля multi-geocoder каталог vow есть. Ошибка возникает и в том случае когда устанавливал модуль локально и когда устанавливал глобально.

Что я не доделал?

 

Ubuntu 13.10

$ nodejs --version
v0.10.15

В Node.js и API яндекс.карт новичок.

7 комментариев
Подписаться на комментарии к посту

попробуйте в каталоге где вы запускаете ./index.js 

запустить nodejs

и в его командной строке сделать

require('vow');

dmitry-krylov51
14 мая 2014, 17:45

 

$ nodejs
> require('vow');
Error: Cannot find module 'vow'
    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 repl:1:1
    at REPLServer.self.eval (repl.js:110:21)
    at repl.js:249:20
    at REPLServer.self.eval (repl.js:122:7)
    at Interface. (repl.js:239:12)
    at Interface.EventEmitter.emit (events.js:95:17)
>

 

 

попробуйте установить переменную окружения $NODE_PATH чтобы она указывала туда куда у вас npm установил модули глобально.

у меня она установлена так:

echo $NODE_PATH

/opt/local/lib/node_modules/

может у вас они стоят тут

/usrl/lib/node_modules/

/usr/local/lib/node_modules/

 

Папку "node_modules" можно найти find-ом както так:

find / -name node_modules -type d 2>/dev/null

 

dmitry-krylov51
16 мая 2014, 11:58

У меня установлен в /usr/local/lib/node_modules/ Но другие модули, установленные глобально (например, hashish) отрабатывают нормально.

Установил vow отдельно:

 

$ npm -g ls
/usr/local/lib
├─┬ hashish@0.0.4
│ └── traverse@0.6.6
├─┬ multi-geocoder@0.0.4
│ ├── handy-http@1.0.0
│ ├── inherit@2.1.0
│ └── vow@0.4.1
└── vow@0.4.3

После этого, в оболочке модуль находится:

 

$ nodejs
> require('vow');
{ Deferred: [Function],
  Promise:
   { [Function]
     cast: [Function],
     all: [Function],
     race: [Function],
     resolve: [Function],
     reject: [Function] },
....

Ошибка осталась такой же:

 

$ ./index.js

module.js:340
    throw err;
          ^
Error: Cannot find module 'Vow'
    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. (/usr/local/lib/node_modules/multi-geocoder/lib/multi-geocoder.js:1:73)
    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 Module.require (module.js:364:17)


Нда,

видимо ошибка в регистре имени модуля 'Vow'

Опубликовал новую версию, сделайте npm install

dmitry-krylov51
16 мая 2014, 13:58

Спасибо, заработало! :-)

 

Спасибо Вам что помогли найти ошибку