Ответы пользователя по тегу npm
  • Как заставить сервер с nodejs обрабатывать почту поступающую на домен?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    В приведенной статье есть скрипт на PHP, его нужно перевести на JavaScript, он короткий и простой, не должно возникнуть проблем. Читать из stdin в node.js можно через поток process.stdin:
    process.stdin.resume();
    process.stdin.setEncoding('utf8');
    process.stdin.on('data', function (text) { ... });
    process.stdin.on('end', function () { ... });

    Читать переменные окружения можно через process.env['VARIABLE_NAME']
    Ответ написан
    Комментировать
  • Как установить phonegap из npm?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Там же кучу всего из исходников должно компилироваться, для этого нужен целый воз всего. Python стоит? Node-gyp стоит? MS Visual Studio? Прописаны ли пути ко всему этому в PATH? Еще советую проверить права к папкам и попробовать запустить консоль из-под админа и оттуда устанавливать. Тут похожая ситуация рассматривается: https://github.com/TooTallNate/node-gyp/issues/277 Ну и высылаю, как при успешном билде должен выглядеть вывод в консоль, из этого можно почерпнуть вот что:
    1. У вас не может сбилдиться первая из компилируемых зависимостей, модуль ws, а именно bufferutil.cc, возможно, npm не там его ищет или не имеет достаточно прав для доступа к нему или к компилятору
    2. Могут быть дополнительные проблемы с geoip-lite, т.к. он при установке качает много из интернета и конвертирует базы, попробуйте ставить его отдельно npm install geoip-lite и посмотрите какой вывод.
    Ответ написан
  • Как установить пакет db-mysql с npm?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Это какой-то не поддерживаемый пакет, последняя версия 3 года назад, похоже, что он уже не совместим с актуальной версией npm, активности в репозитории нет. Ставьте лучше вот этот https://www.npmjs.org/package/mysql
    npm install mysql
    И посоветую свои дополнения к нему: https://www.npmjs.org/package/mysql-utilities
    npm install mysql-utilities
    Ответ написан
    1 комментарий
  • Почему не устанавливается zmq для nodejs?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Проверьте, есть ли Visual Studio чтобы компилировать С++
    Присылаю еще вывод в консоль при правильной сборке, может пригодиться:
    D:\ab>npm install zmq
    /
    > zmq@2.8.0 install D:\ab\node_modules\zmq
    > node-gyp rebuild
    
    D:\ab\node_modules\zmq>node "C:\Program Files\nodejs\node_modules\npm\bin\node-g
    yp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild
    Построение проектов в этом решении по одному. Чтобы включить параллельное построение, добавьте параметр "/m". binding.cc
    C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xlocale(323): warning C4530: C++ exception handler used, but unwind semantics are not enabled. Specify /EHsc [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    D:\ab\node_modules\zmq\node_modules\nan\nan.h(1221): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    D:\ab\node_modules\zmq\node_modules\nan\nan.h(1247): warning C4267: 'argument': conversion from 'size_t' to 'int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(367): warning C4800: 'int' : forcing value to bool 'true' or 'false' (performance warning) [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(564): warning C4344: behavior change: use of explicit template arguments results in call to 'v8::Local<T> NanNew<v8::String,char*>(P)' [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    with [ T=v8::String, P=char * ] but the regular function 'v8::Local<T> NanNew(const char *,int)' is a better match
    with [ T=v8::String ] if you expect 'v8::Local<T> NanNew(const char *,int)' to be called then you need to make it an explicit specialization
    with [ T=v8::String ]
    ..\binding.cc(590): warning C4244: 'argument' : conversion from 'int64_t' to 'const int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(591): warning C4244: 'argument' : conversion from 'int64_t' to 'int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(592): warning C4244: 'argument' : conversion from 'int64_t' to 'const int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(593): warning C4244: 'argument' : conversion from 'int64_t' to 'int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(594): warning C4244: 'argument' : conversion from 'int64_t' to 'const int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(595): warning C4244: 'argument' : conversion from 'int64_t' to 'int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(596): warning C4244: 'argument' : conversion from 'int64_t' to 'const int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(597): warning C4244: 'argument' : conversion from 'int64_t' to 'int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(598): warning C4244: 'argument' : conversion from 'int64_t' to 'const int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(599): warning C4244: 'argument' : conversion from 'int64_t' to 'int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(614): warning C4244: 'argument' : conversion from 'int64_t' to 'const int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(615): warning C4244: 'argument' : conversion from 'int64_t' to 'int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(616): warning C4244: 'argument' : conversion from 'int64_t' to 'const int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(617): warning C4244: 'argument' : conversion from 'int64_t' to 'int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(618): warning C4244: 'argument' : conversion from 'int64_t' to 'const int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(619): warning C4244: 'argument' : conversion from 'int64_t' to 'int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(620): warning C4244: 'argument' : conversion from 'int64_t' to 'const int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(621): warning C4244: 'argument' : conversion from 'int64_t' to 'int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(622): warning C4244: 'argument' : conversion from 'int64_t' to 'const int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(623): warning C4244: 'argument' : conversion from 'int64_t' to 'int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(957): warning C4244: '=' : conversion from 'int64_t' to 'int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(1049): warning C4244: '=' : conversion from 'int64_t' to 'int', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(1136): warning C4344: behavior change: use of explicit template arguments results in call to 'v8::Local<T> NanNew<v8::String,char*>(P)' [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    with [ T=v8::String, P=char * ] but the regular function 'v8::Local<T> NanNew(const char *,int)' is a better match
    with [ T=v8::String ] if you expect 'v8::Local<T> NanNew(const char *,int)' to be called then you need to make it an explicit specialization
    with [ T=v8::String ]
    D:\ab\node_modules\zmq\node_modules\nan\nan.h(1036): warning C4244: 'argument': conversion from 'int64_t' to 'int32_t', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(540) : see reference to function template instantiation 'v8::Local<T> NanNew<v8::Integer,__int64>(P)' being compiled
    with [ T=v8::Integer, P=int64_t ]
    ..\binding.cc(595) : see reference to function template instantiation 'v8::Handle<T> zmq::Socket::GetSockOpt<int64_t>(int)' being compiled
    with [ T=v8::Value ]
    D:\ab\node_modules\zmq\node_modules\nan\nan.h(1036): warning C4244: 'argument': conversion from 'uint64_t' to 'int32_t', possible loss of data [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    ..\binding.cc(540) : see reference to function template instantiation 'v8::Local<T> NanNew<v8::Integer,unsigned __int64>(P)' being compiled
    with [ T=v8::Integer, P=uint64_t ]
    ..\binding.cc(597) : see reference to function template instantiation 'v8::Handle<T> zmq::Socket::GetSockOpt<uint64_t>(int)' being compiled
    with [ T=v8::Value ]
    C:\Users\Timur\.node-gyp\0.10.32\deps\v8\include\v8.h(179): warning C4506: no definition for inline function 'v8::Persistent<T> v8::Persistent<T>::New(v8::Handle<T>)' [D:\ab\node_modules\zmq\build\zmq.vcxproj]
    with [ T=v8::Object ]
    Creating library D:\ab\node_modules\zmq\build\Release\zmq.lib and object D:\ab\node_modules\zmq\build\Release\zmq.exp Generating code Finished generating code zmq.vcxproj -> D:\ab\node_modules\zmq\build\Release\\zmq.node
    zmq@2.8.0 node_modules\zmq
    +-- bindings@1.1.1
    L-- nan@1.3.0
    Ответ написан
    Комментировать
  • Какие инструменты есть для реализации модульного приложения в node.js?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Сервер приложений https://www.npmjs.org/package/impress
    Можно подключить несколько приложений, открыть все на одном или нескольких портах, маршрутизирует между приложениями по доменному имени в урле запросов, и внутри каждого приложения вся логика разбита на отдельные обработчики, посмотри примеры. Но это не express совместимая штука.
    Ответ написан
    Комментировать
  • Как парсить картинки через GET запрос NodeJs?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Или почитайте что такое замыкание или этот код не будет работать. Или нельзя объявлять функции внутри цикла или нельзя писать var внутри цикла. Или вы учите JavaScript тут: learn.javascript.ru или ноду тут: learn.javascript.ru/nodejs-screencast а потом лабораторки тут: nodeschool.io

    var request = require('request'),
        crypto = require('crypto');
    
    var token, url;
    for (var i = 0; i < 5; i++) {
    	token = crypto.randomBytes(16).toString('hex');
    	url = 'https://wu.wsiz.rzeszow.pl/wunet/photos/s' + token + '.jpg';
    	doRequest(url);
    }
    
    function doRequest(url) {
        request.get(
        	{ uri:url, method:'GET', encoding:'binary' },
        	function (err, res, body) {
                console.time(url);
                body = new Buffer(body, 'binary');
                console.timeEnd(url);
            }
        );
    }
    Ответ написан
    3 комментария
  • Node.js не могу установить модули. Почему?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    Все правильно выдает ошибку, вы пытаетесь установить cheerio как зависимость в саму себя. Не нужно сливать с git архив, просто в пустую папку ставьте через npm install cheerio. Git для этого вообще не нужен.
    Ответ написан
    Комментировать
  • Как и где найти модули для Node.js для организации кошерного REST API?

    MarcusAurelius
    @MarcusAurelius Куратор тега Node.js
    автор Impress Application Server для Node.js
    REST есть величайшее мракобесие и маразм всех времен и народов. Берите RPC, как советуют. На голом примитивном механизме HTTP с его недоразвитым набором глаголов POST, GET, PUT, DELETE, которые невозможно расширить и кастомизировать, сложно разработать что-то более сложное, чем работа с файлами или с записями базы данных по принципу CRUD (CREATE, READ, UPDATE, DELETE). Когда же нужно сделать хоть что-то большее, над ресурсом, ввести свой глагол, то вся идеология рушится. Например, у меня есть нефтепровод с магистральными насосными агрегатами, и нужно управлять закрытием и открытием задвижек, параметрами регуляторов давления, мониторингом катодной защиты, другими подсистемами. Эти команды через POST или PUT посылать? Смешно, да? Тут нужно 5000 глаголов/методов ввести над 20ю ресурсами, а не 4 несчастных глагола над несчетным кол-вом ресурсов. Или даже над данными в БД мне нужно новые глаголы, например, хочу создать связь между двумя объектами или дать права пользователю на изменение параметра объекта или запустить отложенную задачу генерации отчетов на сервере, просто запустить и получить в ответ прогнозируемое время завершения, как это сделать на REST? Я уже не говорю о том, что операции могут быть вообще не над ресурсами. Операции могут быть над множествами, запросами (фильтрами, выборками, курсорами), над машиной состояний, над связями между несколькими ресурсами, над системой в целом или вообще над потоками данных, событий или технологическим оборудованием.
    Ответ написан
    5 комментариев
  • Подскажите новичку в node.js

    MarcusAurelius
    @MarcusAurelius
    автор Impress Application Server для Node.js
    Фреймворк
    Посмотрите в сторону Impress, для PHP-шника это будет более естественно. Все урлы мапятся на файловую систему, шаблоны и обработчики переопределяются. Созданием каталогов делается роутинг к страницам и к обработчикам API. Можно менять код обработчиков не перезапуская приложения, просто отредактировав файл на диске. Он подгружается в память и кешируется, то же самое происходит с шаблонами. Все без перезапуска, работает в многопоточном (кластерном) режиме. На нем уже десяток проектов работает под нагрузками. Вот статья на Хабре про Impress (написана в те времена, когда он был еще прототипом): Прототип тоталитарного фреймворка для node.js
    require/dic
    Модульность в Impress специфиеская, обработчики разбиты на отдельные файла, а вот модели и контроллеры можно писать в виде библиотек вот в таком паттерне, как описан тут: Паттерны JavaScript модулей в Impress для node.js и браузеров
    Шаблонизатор
    В Impress есть очень простой шаблонизатор, возможно, он не такой функциональный, но он очень производительный, в отличие, например, от EJS, который сделан просто безграмотно, ибо использует синхронное чтение шаблонов с диска. Для ноды синхронные операции вообще выбиваются из концепции и уничтожают все преимущества.

    Если что, обращайтесь, это разработка моей компании, все оупенсорс, лицензия RUMI. Постепенно и документацию делаем, а примеров полно, хорошими примерами может служить админка к базам данных, выложенная в исходниках вместе с Impress в одном пакете.
    Ответ написан
    Комментировать