Получение RingoJS для поиска необходимых модулей в каталоге node_modules

Я пытаюсь перенести сервис из nodejs в ringojs. Я столкнулся с проблемой с использованием require(), Например, рассмотрим это:

var restify = require('restify');

RingoJS не может найти модуль restify, потому что он не знает, чтобы посмотреть в node_modules каталог. Я могу добавить node_modules на путь, который использует RingoJS (и я это сделал), но это не помогает, когда переадресовывает звонки require()потому что модули вложены в дерево каталогов.

Есть ли способ заставить RingoJS искать нужные модули в каталоге node_modules?

1 ответ

Вы можете добавить дополнительные каталоги в путь поиска модуля Ringo с помощью -m вариант. Пример: установка underscore через нпм с npm install underscore и начать ринго с ringo -m ./node_modules yourscript.js, Undersocre будет доступен и может потребоваться как ожидалось:

    const _ = require("underscore");
    // logs --> "3,6,9"
    console.log(_.map([1, 2, 3], function(num) {
       return num * 3;
    }));

Ваша конкретная проблема заключается в том, что restify совместим только с Node.js, а не с другими CommonJS-подобными платформами. Возможно, у него есть некоторые подмодули, совместимые с Ringo, но я пока не нашел ни одного. Ринго package.json не совместим 1:1 с узлами / npm package.json, Если restify использует некоторые специфичные для Node вещи в дескрипторе пакета, Ringo не сможет загрузить эти ресурсы.

Ринго все еще очень близок к идеям CommonJS с его различными стандартизированными модулями, в то время как Node давно покинул этот путь. Вы найдете модули CommonJS (которые используют require() загрузить модуль) в Node, но не другие API, которые пытались установить CommonJS для серверного JavaScript.

Кроме того, Ringo не построен на обратных вызовах / управляемых событиями неблокирующих ввода-вывода. Вы можете использовать неблокирующий ввод / вывод в Ringo, но вы также можете придерживаться блокирующего ввода / вывода. Это отличается от Node.js, где вы должны разрабатывать неблокирующим образом, и все оптимизировано для гладкой работы с моделью, управляемой событиями.

Другие вопросы по тегам