Разверните приложение Meteor в Synology armv7: существует проблема с `узлами-волокнами` - PullRequest
0 голосов
/ 30 августа 2018

Я потратил пару дней, пытаясь запустить приложение сборки из Meteor на моем Synology ds213j (Armv7, 512 МБ ОЗУ).

Я продолжаю сталкиваться со следующей ошибкой

## There is an issue with `node-fibers` ##
`/volume1/homes/user/app/bundle/programs/server/node_modules/fibers/bin/linux-arm-57/fibers.node` is missing.

Try running this to fix the issue: /volume1/homes/user/.nvm/versions/node/v8.11.2/bin/node /volume1/homes/user/app/bundle/programs/server/node_modules/fibers/build
Error: /volume1/homes/user/app/bundle/programs/server/node_modules/fibers/bin/linux-arm-57/fibers.node: internal error
    at Object.Module._extensions..node (module.js:681:18)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/volume1/homes/user/app/bundle/programs/server/node_modules/fibers/fibers.js:13:39)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
/volume1/homes/user/app/bundle/programs/server/node_modules/fibers/fibers.js:22
                throw new Error('Missing binary. See message above.');
                ^

Error: Missing binary. See message above.
    at Object.<anonymous> (/volume1/homes/user/app/bundle/programs/server/node_modules/fibers/fibers.js:22:9)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
    at Function.Module._load (module.js:497:3)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at Object.<anonymous> (/volume1/homes/user/app/bundle/programs/server/boot.js:1:75)
    at Module._compile (module.js:652:30)

НО, fiber.node фактически существует!

Что я делал раньше:

  • приложение для создания метеоров meteor build --server-only --architecture os.linux.x86_32

  • в папке / program / server npm install --production

  • npm install fibers

Что я пытался это исправить:

  • Зайдите в / Programs / Server / и запустите npm install fiber (и переустановите)
  • установка из источника, следуя инструкциям на https://www.npmjs.com/package/fibers

  • мое метеорное приложение использует Node 8.11.2, но единственной версией узла, доступной для синологии, является 8.9.4. Снял его и вручную установил 8.11.2

  • создайте приложение метеора по умолчанию, чтобы проверить, не вызывает ли мое приложение проблемы.

Пока ничего не получалось, и я понятия не имею, что делать дальше.

Я подозреваю, что проблема в том, что волокна построены для linux-arm-57, и я полагаю, мне нужен arm-7I? Есть что-то, что я могу сделать, чтобы заставить эту работу?

Спасибо!

1 Ответ

0 голосов
/ 05 сентября 2018

Далее я опишу, как правильно развернуть приложение на устройстве ARMv7. При этом я выделю важные шаги , которые часто могут быть причиной ошибок. Я надеюсь, что ваша проблема будет решена путем воспроизведения этих шагов.

1. Создайте свое производственное приложение

  • Убедитесь, что приложение запускается, запускается и все ваши тесты проходят локально.
  • Получите вашу текущую версию разработки для узла. Обратите внимание, что это зависит от версии метеора, которую использует ваш проект. Примечание: метеорное руководство по пользовательскому развертыванию подчеркивает важность соответствующей версии узла .
$ cd ~/path/to/meteor-project
$ meteor node -v
v8.9.4 # this example uses Meteor 1.6.1 which uses node 8.9.4
  • создайте ваше производственное приложение с помощью команды build (я немного адаптировал ваши спецификации здесь).
$ cd ~/path/to/meteor-project
$ meteor npm install --production
$ meteor build ../build/deployment-test --server-only --architecture os.linux.x86_32

2. Подготовьте среду вашего целевого устройства

  • Сборки Meteor также являются приложениями Node.js. Для вашего устройства потребуется сборка ARMv7 Node.js. Самый простой способ сделать это - использовать скрипт установки из узла источника (откройте на новой вкладке, чтобы просмотреть скрипт).
$ curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
$ sudo apt-get install -y nodejs
  • Обратите внимание, что официальное руководство по установке узла также указывает, что "Чтобы скомпилировать и установить собственные дополнения из npm, вам также может понадобиться установить инструменты сборки" . Вам это понадобится, потому что fibers или bcrypt являются такими нативными аддонами.
$ sudo apt-get install -y build-essential
  • Проверьте версию установленного узла
$ node -v
v8.11.4 # but we need v8.9.4
  • Самый простой способ получить правильную версию узла , которая точно соответствует вашей версии разработки , - это использовать пакет npm n.
$ sudo npm install -g n
$ sudo n 8.9.4
$ # ... installs target version
$ node -v
v8.9.4 # if this is still the old version just restart the shell
  • если вам нужна помощь по этому вопросу, прочитайте эту тему выпуска github
  • наконец, установите mongodb> = 2,6 ( важно! ) на целевом устройстве (не рассматривается в этом ответе).

3. Установите ваше производственное приложение на целевое устройство

  • копировать / перемещать / загружать архив сборки на целевое устройство
  • распакуйте комплект развертывания
$ cd ~/path/to/deploymentapp
$ tar -xvzf ./meteor-project.tar.gz # extracts all content into a folder named 'bundle'
  • установить зависимости npm в целевой системе
$ cd bundle/programs/server/
$ npm install --production
  • , если вы повторили все вышеперечисленные шаги, пакеты npm (и особенно собственные пакеты, такие как fibers или bcrypt) должны быть установлены здесь без каких-либо ошибок. Теперь вернитесь к bundle/ и запустите приложение:
$ cd ../../
$ MONGO_URL=mongodb://yourmongodbcredentials node main.js

Я надеюсь, что, скопировав это руководство, вы найдете решение своей проблемы.


Добавлено по причинам SEO: В этом руководстве показано, как развернуть приложение Meteor на Raspberry PI с архитектурой ARMv7 и установленной Raspbian (32-разрядной). Его также можно использовать как основу для других устройств ARMv7, таких как OP Synology.
...