Модуль не найден при использовании rekuire, requirish или rfr для решения nodejs требует относительной проблемы

Я хотел бы избежать сложной проблемы с относительным путем, описанной здесь, используя одно из рекомендуемых решений. Я столкнулся с тремя подобными библиотеками:

Я пробовал все три, и все терпят неудачу с «модулем не найден» или подобной ошибкой, которая заставляет меня поверить, что я делаю что-то принципиально неправильное. Я относительно неопытен с npm/node. Я использую узел в браузере только с помощью browserify для объединения моего приложения в один файл JS.

Вот мой чрезвычайно простой пример hello world:

Структура:

lib/Bob.js
app.js

Боб.js

function Bob() {
    return "I am bob";
}

module.exports = Bob;

app.js

var Bob = require('./lib/Bob.js');

console.log(Bob());

Объединение в один JS:

browserify app.js -o bundle.js

Консоль Chrome успешно выводит «Я Боб».


Теперь, если я попробую и библиотеки, скажем, requirish:

ТРЕБОВАНИЕ:

npm install requirish

изменения app.js

'use strict';

require('requirish')._(module);
var Bob = require('lib/Bob');

console.log(Bob());

Объединение изменений

browserify -t requirish app.js > bundle.js

Я получаю следующую ошибку:

Error: Cannot find module '/lib/Bob' from '/Users/ngb/projects/MyApp/src/main/resources/public/js/hello'
at /Users/ngb/.nvm/v0.10.30/lib/node_modules/browserify/node_modules/resolve/lib/async.js:42:25

Запрос запроса:

'use strict';

var rfr = require('rfr');
var Bob = rfr('lib/Bob');

console.log(Bob());

Здание

browserify app.js -o bundle.js -d

Консоль Chrome выводит следующую ошибку:

Uncaught Error: Cannot find module 'lib/Bob'

person nogridbag    schedule 27.01.2015    source источник


Ответы (1)


Browserify может найти модуль по строке синтаксического анализа «require». Если вы хотите использовать как боковой клиент, так и сервер, используйте rfr для серверной части и browserify-rfr для преобразования браузера.

На мой взгляд, «rfr» — лучший, потому что этот модуль не отменяет оригинальное требование.

------- Уведомление! Дополнительная информация. Поскольку сегодня версия browserify-rfr оставляет мой локальный путь к файлу bundle.js. Это может вызвать другую проблему, поэтому я выбрал requirish. Поскольку requirish изменяет поведение исходного запроса, добавляя новый путь к module.paths, вы всегда замечаете это и предупреждаете своего коллегу!

Благодарность!

https://www.npmjs.com/package/requirish

person ssohjiro    schedule 07.07.2015