node.js модулът работи от командния ред, а не от скрипта

Инсталирах jsdom на моята машина с Windows 8.1.

Ако съм една директория над моята локална инсталация на jsdom, мога да се обадя

node jsdom

и всичко работи.

Ако обаче от същия dir / pwd извикам скрипт (на различен път) с

require("jsdom").jsdom;

Получавам грешки от типа

Error: cannot find module 'jsdom'

person jedierikb    schedule 14.11.2013    source източник


Отговори (1)


CLI на възела и require() се държат малко по-различно:

node path разрешава чрез path.resolve

  • Държи се така, както бихте очаквали вашата операционна система да разреши път.

require(path) разрешава с помощта на require.resolve

  • Точното поведение е малко сложно, но по същество, ако началото на низа изглежда като име на пакет, той ще търси в node_modules съответстващ пакет (т.е. не изглежда като път на файлова система, започващ с ./, /, ../ и т.н.).

Във вашия случай можете да инсталирате модула с NPM (за предпочитане):

npm install jsdom --save

require("jsdom").jsdom;

Или включете файла директно, ако ръчно сте го добавили към вашата файлова система:

require("./jsdom.js").jsdom;
person brianreavis    schedule 14.11.2013