pomeo / node-insales

node.js module for API insales.ru
9 stars 5 forks source link

Проблемы с установкой js2xml на windows #20

Closed VladimirIvanin closed 8 years ago

VladimirIvanin commented 8 years ago

Возможно использовать другой пакет для работы с xml? Например: xml2js

Так как установка js2xml тянет за собой пакет node-gyp, который приводит к данной ошибке: http://prntscr.com/bmkyns. Чтобы пофиксить ошибку нужно установить много софта, вплоть до python. Подробнее тут: https://www.robertkehoe.com/2015/03/fix-node-gyp-rebuild-error-on-windows/

pomeo commented 8 years ago

xml2js это совсем другой пакет, если бы его можно использовать, я бы его использовал. Тем более он в node_modules есть, он вместе с restler ставится. Не js2xml тянет node-gyp, а libxmljs пытается скомпилироваться. Поэтому придётся вам ставить весь софт который нужен для компиляции.

VladimirIvanin commented 8 years ago

На примере post запроса попробовал сделать конвертацию через xml2js:

var _xml2js = require('xml2js');

var xmlBuilder = new _xml2js.Builder();

function post(conn) {
  if (conn.obj !== undefined) {
    var _json = {}
    _json[Object.keys(conn.obj)[0]] = conn.obj[Object.keys(conn.obj)[0]]
    var jsToXml = xmlBuilder.buildObject(_json);
    opt.data = jsToXml.toString();
  }

  var p = _restler2.default.post('https://' + conn.id + ':' + conn.token + '@' + conn.url + '/admin/' + conn.api + '.xml', opt);
  return new Promise(function (resolve, reject) {
    (0, _request.request)(p).then(resolve).catch(reject);
  });
}

P.s. Большое спасибо за API! Есть желание написать на основе вашего API аналог insup. И так как пользователей windows среди верстальщиков куча, хочется обеспечить совместимость с windows. Буду признателен если всё же получится использовать xml2js вместо js2xml.

pomeo commented 8 years ago

Теперь вижу, раньше xml2js не умел строить xml. Переделаю через пару недель, как время будет.

VladimirIvanin commented 8 years ago

Спасибо! Вдохновился вот этим пакетом для shopify gulp-shopify-upload. А ваша разработка единственная для node.js, с которой можно это реализовать. Если не планировали, то как будет время попробую написать методы для работы с ассетами.