Добавление платформы в Apache Cordova не работает

Я устанавливаю Apache Cordova на Ubuntu 13.10, следуя этим инструкциям: http://cordova.apache.org/docs/en/3.5.0//guide_cli_index.md.html#The%20Command-Line%20Interface

Застрял в разделе «Добавить платформы»:

$ cordova platforms ls

Installed platforms: 
Available platforms: amazon-fireos, android, blackberry10, firefoxos, ubuntu

похоже, что Ubuntu доступен. Итак, я продолжаю.

$ cordova platform add ubuntu
Checking ubuntu requirements...
Running "dpkg-query -Wf'${db:Status-abbrev}' cmake debhelper libx11-dev libicu-dev pkg-config qtbase5-dev qtchooser qtdeclarative5-dev qtfeedback5-dev qtlocation5-dev qtmultimedia5-dev qtpim5-dev qtsensors5-dev qtsystems5-dev 2>/dev/null | grep -q '^i'" (output to follow)

Make sure you have the following packages installed: 
user@host:/opt/lampp/htdocs/hello$ 

выглядит уже странно, так как предупреждает меня об установке пакетов при пустом списке.

$ cordova build
No platforms added to this project. Please use `cordova platform add <platform>`.

... и это не сработало.

$ cordova platforms ls

Installed platforms: 
Available platforms: amazon-fireos, android, blackberry10, firefoxos, ubuntu

похоже раньше.

Любые идеи?


добавка:

с участием

$ cordova -d platform add ubuntu

Получаю следующее:

CordovaError: Make sure you have the following packages installed: 
at /usr/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/metadata/ubuntu_parser.js:56:22
at /usr/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/shelljs/shell.js:1727:7
at ChildProcess.exithandler (child_process.js:651:7)
at ChildProcess.emit (events.js:98:17)
at maybeClose (child_process.js:755:16)
at Socket.<anonymous> (child_process.js:968:11)
at Socket.emit (events.js:95:17)
at Pipe.close (net.js:465:12)

Дополнение 2:

Хорошо, я добавил все недостающие библиотеки с помощью sudo apt-get install ......

Теперь я понял:

$ cordova -d platform add ubuntu
cordova library for "ubuntu" already exists. No need to download. Continuing.
Checking if platform "ubuntu" passes minimum requirements...
Checking ubuntu requirements...
Running "dpkg-query -Wf'${db:Status-abbrev}' cmake debhelper libx11-dev libicu-dev pkg-config qtbase5-dev qtchooser qtdeclarative5-dev qtfeedback5-dev qtlocation5-dev qtmultimedia5-dev qtpim5-dev qtsensors5-dev qtsystems5-dev 2>/dev/null | grep -q '^i'" (output to follow)

Creating ubuntu project...
Running command: /home/user/.cordova/lib/ubuntu/cordova/3.5.0/bin/create /opt/lampp/htdocs/hello/platforms/ubuntu com.example.hello HelloWorld
Shelljs module was not found, running 'npm install'.....
ERROR : running 'npm install' is npm installed? Error: Command failed: npm WARN package.json [email protected] No README data
npm ERR! Error: Attempt to unlock [email protected], which hasn't been locked
npm ERR!     at unlock (/usr/lib/node_modules/npm/lib/utils/locker.js:44:11)
npm ERR!     at cb (/usr/lib/node_modules/npm/lib/cache/add-named.js:32:5)
npm ERR!     at /usr/lib/node_modules/npm/lib/cache/add-named.js:41:20
npm ERR!     at /usr/lib/node_modules/npm/lib/utils/locker.js:30:7
npm ERR!     at /usr/lib/node_modules/npm/node_modules/lockfile/lockfile.js:167:38
npm ERR!     at OpenReq.Req.done (/usr/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:144:5)
npm ERR!     at OpenReq.done (/usr/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:64:22)
npm ERR!     at Object.oncomplete (fs.js:107:15)
npm ERR! If you need help, you may report this *entire* log,
npm ERR! including the npm and node versions, at:
npm ERR!     <http://github.com/npm/npm/issues>

npm ERR! System Linux 3.11.0-26-generic
npm ERR! command "/usr/bin/node" "/usr/bin/npm" "install"
npm ERR! cwd /home/user/.cordova/lib/ubuntu/cordova/3.5.0/bin
npm ERR! node -v v0.10.29
npm ERR! npm -v 1.4.14
npm ERR! Error: Attempt to unlock elementtree@*, which hasn't been locked
npm ERR!     at unlock (/usr/lib/node_modules/npm/lib/utils/locker.js:44:11)
npm ERR!     at cb (/usr/lib/node_modules/npm/lib/cache/add-named.js:32:5)
npm ERR!     at /usr/lib/node_modules/npm/lib/cache/add-named.js:41:20
npm ERR!     at /usr/lib/node_modules/npm/lib/utils/locker.js:30:7
npm ERR!     at /usr/lib/node_modules/npm/node_modules/lockfile/lockfile.js:167:38
npm ERR!     at OpenReq.Req.done (/usr/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:144:5)
npm ERR!     at OpenReq.done (/usr/lib/node_modules/npm/node_modules/graceful-fs/graceful-fs.js:64:22)
npm ERR!     at Object.oncomplete (fs.js:107:15)
npm ERR! If you need help, you may report this *entire* log,
npm ERR! including the npm and node versions, at:
npm ERR!     <http://github.com/npm/npm/issues>

....[several other lines with similar errors].....

Command finished with error code 1: /home/user/.cordova/lib/ubuntu/cordova/3.5.0/bin/create /opt/lampp/htdocs/hello/platforms/ubuntu,com.example.hello,HelloWorld
Error: /home/user/.cordova/lib/ubuntu/cordova/3.5.0/bin/create: Command failed with exit code 1
at ChildProcess.whenDone (/usr/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:135:23)
at ChildProcess.emit (events.js:98:17)
at maybeClose (child_process.js:755:16)
at Process.ChildProcess._handle.onexit (child_process.js:822:5)

И да, npm установлен

решается изменением владельца /home/user/.npm с "root" на "user"

Тем не менее возникает следующая проблема:

$ cordova build
Running command: /opt/lampp/htdocs/hello/platforms/ubuntu/cordova/build 
/opt/lampp/htdocs/hello/platforms/ubuntu/cordova/check_reqs
Error: missing dependency cmake libicu-dev pkg-config qtbase5-dev qtchooser qtdeclarative5-dev qtfeedback5-dev qtlocation5-dev qtmultimedia5-dev qtpim5-dev qtsensors5-dev qtsystems5-dev
/opt/lampp/htdocs/hello/platforms/ubuntu/cordova/check_reqs FAILED
Error: /opt/lampp/htdocs/hello/platforms/ubuntu/cordova/build: Command failed with exit code 1
at ChildProcess.whenDone (/usr/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:135:23)
at ChildProcess.emit (events.js:98:17)
at maybeClose (child_process.js:755:16)
at Process.ChildProcess._handle.onexit (child_process.js:822:5)

И я установил их: cmake libicu-dev pkg-config qtbase5-dev qtchooser qtdeclarative5-dev qtfeedback5-dev qtlocation5-dev qtmultimedia5-dev qtpim5-dev qtsensors5-dev qtsystems5-dev


person Lokomotywa    schedule 12.08.2014    source источник


Ответы (3)


Сообщение об ошибке выглядит некорректным, но это те значения, которые вам нужны: cmake libicu-dev pkg-config qtbase5-dev qtchooser qtdeclarative5-dev qtfeedback5-dev qtlocation5-dev qtmultimedia5-dev qtpim5-dev qtsensors5-dev qtsystems5-dev

По крайней мере, согласно этой ссылке на github: ссылка

Возможно, вы захотите добавить -d при выполнении кода добавления платформы для дополнительной информации об отладке, например, cordova -d platform add ubuntu

редактировать:

После вопроса снизу: Вы можете позвонить apt-get install <insert package list>, чтобы установить пакеты.

edit2:

Опять же больше информации после комментария. Не совсем уверен, почему он не работает, поскольку кажется, что у вас правильно установлен npm?

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

npm install [email protected] elementtree [email protected] [email protected] [email protected].*

person Dick van den Brink    schedule 12.08.2014
comment
спасибо, это дает мне эту ошибку (см. дополнение к основному разделу): - person Lokomotywa; 12.08.2014
comment
Вы пытались установить перечисленные выше пакеты? - person Dick van den Brink; 12.08.2014
comment
как мне это сделать лучше всего, чтобы не испортить мою систему? (И почему это не делается автоматически ни на одном из множества этапов установки, которые я прошел раньше?) - person Lokomotywa; 12.08.2014
comment
Вы можете вызвать apt-get install ‹список пакетов›, чтобы установить пакеты. - person Dick van den Brink; 12.08.2014
comment
Я сделал, но у меня появилось больше ошибок (см. Приложение 2 к основному разделу) - person Lokomotywa; 12.08.2014
comment
снова редактирование, кажется немного болезненным, чтобы заставить его работать на ubuntu: S - person Dick van den Brink; 12.08.2014
comment
apt-get install [вставить список пакетов из ошибки] сработал для меня - person Astra Bear; 06.07.2016

По словам разработчиков Cordova, эта проблема исправлена ​​в последней версии:

https://github.com/apache/cordova-lib/commit/153092f2c235185c7f141979a550779800954a92

Попробуйте заменить run npm -g explore cordova и заменить содержимое node_modules/cordova-lib последней версией cordova-lib с GitHub.

person codevision    schedule 12.08.2014
comment
Хорошо, а как мне обновить до последней версии, не испортив установку? - person Lokomotywa; 12.08.2014
comment
Похоже, вам придется испортить установку. Вероятно, изменение на месте будет приемлемым, пока не будет выпущена Cordova 3.6.0. Не уверен, когда эта версия будет выпущена, но я предполагаю, что на следующей неделе, а не раньше, у этих ребят есть несколько важных дискуссий, которые они хотят решить перед выпуском. - person codevision; 12.08.2014

Когда вы откроете код для платформ / ubuntu / cordova / check_reps, вы заметите кое-что интересное:

var deps = "cmake libicu-dev pkg-config qtbase5-dev qtchooser qtdeclarative5-dev qtfeedback5-dev qtlocation5-dev qtmultimedia5-dev qtpim5-dev qtsensors5-dev qtsystems5-dev";

exec("dpkg-query -Wf'${db:Status-abbrev}\\n' click " + deps, function(error, stdout, stderr)

Это вызовет следующую команду оболочки:

dpkg-query -Wf'${db:Status-abbrev}\n' click cmake libicu-dev [and so on...]

Я не знаю, почему пакет «click» не включен как часть строки deps, но он также необходим, и сообщение об ошибке не скажет вам об этом.

Я обнаружил, что установка click сделала свое дело:

sudo apt-get install click

Удачи!

Кстати, я опубликовал здесь идентичный ответ: Команда сборки в Apache Cordova

person Community    schedule 04.10.2014