2016-06-27 2 views
0

Я пытаюсь перенести службу из nodejs в ringojs. У меня возникла проблема с использованием require(). Например считают это:Получение RingoJS для поиска необходимых модулей в каталоге node_modules

var restify = require('restify'); 

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

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

ответ

0

Вы можете добавить дополнительные каталоги в путь поиска модуля Ringo с опцией -m. Пример: установите underscore через npm с npm install underscore и запустите ringo с 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, но я пока не нашел их. Ringo's package.json не 1: 1 совместим с Node's/npm's package.json. Если в дескрипторе пакета restify использует некоторые специфичные для узла элементы, Ringo не может загрузить эти ресурсы.

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

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

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