Невозможно запустить пример приложения appjs с помощью node.js

Я пытаюсь запустить один из примеров проектов, используя appjs, который присутствует здесь https://github.com/appjs/appjs/tree/master/examples. Я использую последнюю версию node.js (v4.1.0) в Windows (64-разрядная машина).

Когда я пытаюсь запустить пример, используя приведенную ниже команду в командной строке

узел --harmony index.js

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

Error: AppJS requires Node is run with the --harmony command line flag
at Object.<anonymous> (F:\programs\appjs_examples\node_modules\appjs\lib\ind
ex.js:2:9)
at Module._compile (module.js:434:26)
at Object.Module._extensions..js (module.js:452:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (F:\programs\appjs_examples\octosocial\index.js:1:73)
at Module._compile (module.js:434:26)
at Object.Module._extensions..js (module.js:452:10)

Я пытался найти эту проблему, но не нашел решения. Кто-нибудь может сказать мне, как использовать node.js с флагом гармонии?

ОБНОВЛЕНИЕ Мой index.js выглядит так

var app = require('appjs'),
github = new (require('github'))({ version: '3.0.0' }),
KEY_F12 = process.platform === 'darwin' ? 63247 : 123;

app.serveFilesFrom(__dirname + '/assets');

var window = app.createWindow({
 width: 460,
  height: 640,
 resizable: false,
  disableSecurity: true,
  icons: __dirname + '/assets/icons'
 });

  window.on('create', function(){
   window.frame.show();
   window.frame.center();
   });

 window.on('ready', function(){
   var $ = window.$,
  $username = $('input[name=username]'),
  $password = $('input[name=password]'),
  $info = $('#info-login'),
  $label = $info.find('span'),
  $buttons = $('input, button');

 $(window).on('keydown', function(e){
  if (e.keyCode === KEY_F12) {
    window.frame.openDevTools();
  }
});

 $username.focus();

 $('#login-form').submit(function(e){
e.preventDefault();

$info.removeClass('error').addClass('success');
$label.text('Logging in...');
$buttons.attr('disabled', true);

  github.authenticate({
    type: 'basic',
   username: $username.val(),
  password: $password.val()
   });

github.user.get({}, function(err, result) {
  if (err) {
    $info.removeClass('success').addClass('error');
    $label.text('Login Failed. Try Again.');
    $buttons.removeAttr('disabled');
  } else {
    loggedIn(result);
  }
  });
});

 function loggedIn(result){
    $label.text('Logged in!');
    $('#user-avatar').append('<img src="'+result.avatar_url+'" width="64" height="64">');
   $('#user-name').text(result.name);
    $('#login-section').hide();
    $('#profile-section').show();
    ['Followers', 'Following'].forEach(function(type){
      github.user['get'+type]({ user: result.login }, populate.bind(null,     type.toLowerCase()));
});
}

Теперь с v0.12 Node.js я получаю сообщение об ошибке ниже

    F:\softwares\Node.js_v0.12\node_modules\appjs\lib\index.js:2
throw new Error ('AppJS requires Node is run with the --harmony command line
  Error: AppJS requires Node is run with the --harmony command line flag
  at Object.<anonymous> (F:\softwares\Node.js_v0.12\node_modules\appjs\lib\ind
ex.js:2:9)
   at Module._compile (module.js:460:26)
   at Object.Module._extensions..js (module.js:478:10)
   at Module.load (module.js:355:32)
   at Function.Module._load (module.js:310:12)
   at Module.require (module.js:365:17)
   at require (module.js:384:17)
   at Object.<anonymous> (F:\softwares\Node.js_v0.12\index.js:1:73)
   at Module._compile (module.js:460:26)
   at Object.Module._extensions..js (module.js:478:10)

person Parth Doshi    schedule 17.09.2015    source источник
comment
Условие, которое вызывает это, находится здесь: if (typeof Proxy !== 'object' || typeof WeakMap !== 'function') { вы не найдете никакой информации об этом при поиске, я предлагаю вместо этого перейти к отслеживанию проблем модуля. Кажется, это может быть просто несовместимо с node.js 4   -  person Kevin B    schedule 17.09.2015
comment
хорошо, так что в этом случае мне нужно использовать более низкую версию node.js, чтобы это заработало?   -  person Parth Doshi    schedule 17.09.2015
comment
Вот с чего я бы начал.   -  person Kevin B    schedule 17.09.2015
comment
Эта ссылка [stackoverflow.com/questions/28388885/ предполагает, что v0.12 содержит флаг гармонии. Не могли бы вы сказать мне, могу ли я продолжить с v0.12?   -  person Parth Doshi    schedule 17.09.2015
comment
Да, в версии 0.12 есть флаг гармонии. Я сейчас использую 0.12.7   -  person Kevin B    schedule 17.09.2015
comment
Привет, я пытался использовать v0.12, но все равно получаю ту же проблему. Пожалуйста, смотрите обновленный вопрос   -  person Parth Doshi    schedule 17.09.2015
comment
Между прочим, ни один из ваших кодов не актуален.   -  person Kevin B    schedule 17.09.2015
comment
Я не могу понять. Это проблема с node.js или я неправильно его запускаю?   -  person Parth Doshi    schedule 17.09.2015
comment
Это проблема модуля, который вы используете, и каким-то образом связанная с используемой вами версией node.js и/или тем, как вы запускаете приложение.   -  person Kevin B    schedule 17.09.2015
comment
сейчас я использую версию v0.12.6. Я проверил это с помощью команды node -v. Я использую модуль appjs и github. Я запускаю приложение с помощью командного узла --harmony index.js ... как указано здесь [github.com/appjs/appjs/blob/master/examples/octosocial/   -  person Parth Doshi    schedule 17.09.2015
comment
правильно, и все это выглядит правильно. но, если бы вы правильно запускали его с флагом гармонии, Proxy и WeakMap были бы определены. значит, что-то не так.   -  person Kevin B    schedule 17.09.2015
comment
Любые идеи о том, как я должен попытаться отладить это? Вы пробовали запускать appjs с флагом гармонии?   -  person Parth Doshi    schedule 17.09.2015
comment
@KevinB: есть идеи, как действовать дальше?   -  person Parth Doshi    schedule 18.09.2015


Ответы (1)


Только что протестировал ваш код локально с помощью node v0.12.7 и v4.0.0. Похоже, проверка node_modules/appjs/lib/index.js гарантирует, что прокси включен, несмотря ни на что.

По умолчанию флаг --harmony не включает прокси. Однако вы можете использовать --harmony_proxies.

Чтобы помочь вам понять, что происходит:

  1. Откройте node в своем терминале, затем введите Proxy. Вы получите «Прокси не определен».

  2. Теперь откройте node --harmony в своем терминале и сделайте то же самое. Вы получите тот же результат.

  3. Теперь с node --harmony-proxies. Бам, ты получаешь пустой объект.

Вы должны иметь возможность запускать это с v4.x.x, однако вам все равно понадобится флаг прокси для гармонии.

Когда произошло слияние с node.js и io.js для v4, они выпустили страницу с функциями ES6, которые поставляются, если вы используете 4.x.x. https://nodejs.org/en/docs/es6/

https://github.com/appjs/appjs устарела, но как только вы пройдете проверка возможностей модуля, потребуется 32-битная версия ;)

Изменить:

Чтобы правильно запустить приложение, используйте следующее:

node --harmony-proxies index.js

Вот снимок экрана, показывающий ожидаемый результат шага 3 выше. введите здесь описание изображения

person technicallyjosh    schedule 20.09.2015
comment
Привет. У меня есть некоторые сомнения. В настоящее время я использую версию узла v.0.12.6. Когда я набираю прокси, я получаю «Прокси не определен». Когда я набираю node --harmony и node --harmony-proxy. Я получаю тот же результат. Как вы установили флаг прокси на v0.12.6 или v.4.x.x. ? - person Parth Doshi; 21.09.2015
comment
@ParthDoshi Я не могу воспроизвести проблему с 0.12.6. Я только что попробовал с node --harmony-proxies, набрал Proxy и получил {} - person technicallyjosh; 21.09.2015
comment
@ParthDoshi Я приложил скриншот того, что дает мой ответ. - person technicallyjosh; 21.09.2015
comment
о, хорошо, теперь даже я получаю тот же результат, что и ваш. Можете ли вы сказать, как запустить это, используя флаг гармонии и v0.12.6 [github.com/appjs/appjs/blob/master/examples/octosocial/ - person Parth Doshi; 21.09.2015
comment
Я добавил правильную команду прямо над снимком экрана :) Примечание: его сообщения об ошибках неверны, так как запуск со стандартным флагом --harmony неверен. - person technicallyjosh; 21.09.2015
comment
Я пробовал вашу команду как на v.4.x, так и на v0.12.6. на v4.xi появляется сообщение об ошибке Ошибка: файл AppJS .node не найден в Object.‹anonymous› (F:\softwares\Node.js\node_modules\appjs\lib\bindings. js:19:9) и на v. 12.6 Я получаю сообщение об ошибке Ошибка: AppJS требует Node.js v0.8 в Object.‹anonymous› (F:\softwares\Node.js_v0.12\node_modules\appjs\lib\bin dings.js:9:9) - person Parth Doshi; 21.09.2015
comment
Теперь это совершенно новый вопрос :), поскольку он использует собственные привязки, похоже, поддерживается только 0.8.x. последняя фиксация этого проекта была в 2014 году... с тех пор многое изменилось. вы можете попробовать перестроить привязки, используя node-gyp. другой вариант — использовать другой собственный набор оболочек, например nwjs или электрон - person technicallyjosh; 21.09.2015
comment
Должен ли я сейчас использовать v0.8 и, возможно, позже попробовать создать узел для других версий? - person Parth Doshi; 21.09.2015
comment
я бы честно посмотрел на другое решение для приложения нативного типа. Это зависит от вас. В основном я пытался помочь вам с проблемой флага --harmony :) - person technicallyjosh; 21.09.2015
comment
что вы подразумеваете под другим решением для приложения нативного типа? Вы имеете в виду альтернативы для appjs? Какие они, если вы знаете? - person Parth Doshi; 21.09.2015
comment
Давайте продолжим обсуждение в чате. - person technicallyjosh; 21.09.2015