Нпм ERR! код ENOENT при добавлении плагинов Cordova (Cordova удаляет искомый файл)
Я в ловушке несколько бесконечной петли борьбы! Пожалуйста, помогите XD
Независимо от того, какие команды phonegap или cordova cli я запускаю, cordova, похоже, удаляет те самые файлы, которые она искала, прежде чем искать их.
Вот только несколько известных команд, которые вызывают ошибку для меня:
$ cordova plugin add <plugin name>
$ phonegap plugin add <plugin name>
$ cordova platform update <platform name>
$ phonegap platform update <platform name>
$ cordova platform remove <platform name>
$ phonegap platform remove <platform name>
См. Ниже вывод терминала, который показывает вывод, который я получаю при выполнении этих команд. Я действительно не уверен, почему Cordova удаляет тот самый файл, который пытается переименовать, прежде чем пытается переименовать его. Очень расстраивает!
Шаг 1 (убедитесь, что у нас чистая головная уборка и нет изменений в нашем рабочем наборе)
apple@Child-2:~/projects/infiniteinternet/prodmode/prodmode-client-mobile-builds/phonegap * feature-barcode-scanner$ git status
# On branch feature-barcode-scanner
nothing to commit, working directory clean
Шаг 2 (попробуйте добавить плагин)
apple@Child-2:~/projects/infiniteinternet/prodmode/prodmode-client-mobile-builds/phonegap * feature-barcode-scanner$ cordova plugin add phonegap-plugin-barcodescanner --variable CAMERA_USAGE_DESCRIPTION="To scan barcodes"
Unmet project requirements for latest version of phonegap-plugin-barcodescanner:
cordova-android (6.2.3 in project, >=6.3.0 required)
Fetching highest version of phonegap-plugin-barcodescanner that this project supports: 6.0.8 (latest is 7.0.0)
Error: Failed to fetch plugin phonegap-plugin-barcodescanner@6.0.8 via registry.
Probably this is either a connection problem, or plugin spec is incorrect.
Check your connection and plugin name/version/URL.
Error: npm: Command failed with exit code 254 Error output:
npm WARN cordova-plugin-file-transfer@1.5.1 requires a peer of cordova-plugin-file@^3.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN cordova-plugin-media-capture@1.2.0 requires a peer of cordova-plugin-file@^3.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN com.prodmod.mobileclient@1.0.0 No repository field.
npm WARN com.prodmod.mobileclient@1.0.0 No license field.
npm ERR! path prodmode-client-mobile-builds/phonegap/node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js
npm ERR! code ENOENT
npm ERR! errno -2
npm ERR! syscall rename
npm ERR! enoent ENOENT: no such file or directory, rename 'prodmode-client-mobile-builds/phonegap/node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js' -> 'prodmode-client-mobile-builds/phonegap/node_modules/cordova-ios/node_modules/simple-plist/node_modules/.base64-js.DELETE'
npm ERR! enoent This is related to npm not being able to find a file.
npm ERR! enoent
┌──────────────────────────────────────────────────────────┐
│ npm update check failed │
│ Try running with sudo or get access │
│ to the local update config store via │
│ sudo chown -R $USER:$(id -gn $USER) /Users/apple/.config │
└──────────────────────────────────────────────────────────┘
npm ERR! A complete log of this run can be found in:
npm ERR! .npm/_logs/2017-11-10T00_23_21_467Z-debug.log
Шаг 3 (проверьте изменения git, вызванные командой на шаге 2)
Хорошо, так что это не удалось. Давайте выясним, что случилось с предполагаемым отсутствующим файлом. Ну видимо кордова удалила файл, прежде чем его искали?
apple@Child-2:~/projects/infiniteinternet/prodmode/prodmode-client-mobile-builds/phonegap * feature-barcode-scanner$ git status
# On branch feature-barcode-scanner
# Changes not staged for commit:
# (use "git add/rm <file>..." to update what will be committed)
# (use "git checkout -- <file>..." to discard changes in working directory)
#
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/.npmignore
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/.travis.yml
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/LICENSE.MIT
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/README.md
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/base64js.min.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/bower.json
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/lib/b64.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/package.json
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/test/big-data.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/test/convert.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/base64-js/test/url-safe.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/.jshintrc
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/.travis.yml
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/History.md
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/LICENSE
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/Makefile
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/README.md
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/dist/plist-build.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/dist/plist-parse.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/dist/plist.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/examples/browser/index.html
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/index.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/lib/build.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/lib/parse.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/plist/package.json
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/.npmignore
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/CHANGELOG.md
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/LICENSE
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/README.md
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/Utility.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLAttribute.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLCData.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLComment.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLDTDAttList.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLDTDElement.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLDTDEntity.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLDTDNotation.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLDeclaration.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLDocType.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLDocument.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLDocumentCB.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLElement.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLNode.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLProcessingInstruction.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLRaw.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLStreamWriter.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLStringWriter.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLStringifier.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLText.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/XMLWriterBase.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/lib/index.js
# deleted: node_modules/cordova-ios/node_modules/simple-plist/node_modules/xmlbuilder/package.json
#
no changes added to commit (use "git add" and/or "git commit -a")
Если у кого-то есть какие-либо предложения о том, как решить эту проблему, я был бы очень благодарен. Я не уверен, что вызвало это или когда оно вступило в силу, но вот уже пару недель я не могу добавить плагины в свой проект.
Заранее спасибо!
РЕДАКТИРОВАТЬ: Настройки среды:
apple@Child-2:/ $ cordova --version
7.0.1
┌──────────────────────────────────────────┐
│ Update available: 7.1.0 (current: 7.0.1) │
│ Run npm install -g cordova to update. │
└──────────────────────────────────────────┘
apple@Child-2:/ $ phonegap --version
7.1.1
apple@Child-2:/ $ node --version
v6.11.1
apple@Child-2:/ $ npm --version
5.4.2
2 ответа
Хм, так что я смог решить эту проблему. Обсуждение в ветке помогло мне привести к правильному ответу, фактически не решая его.
Вот что я сделал:
Шаг первый: обновить кордову
$ sudo npm install -g cordova
PhoneGap уже был обновлен до последней версии, но мой Cordova не было.
Шаг второй: Обновление узла и npm
- Я скачал скомпилированный исходник с обновленным узлом и npm с https://nodejs.org/en/download/
Судя по всему, после обновления этих двух компонентов все в моем приложении снова заиграло. На этом этапе он будет установлен в /plugins
с помощью phonegap plugin add <plugin name>
но он не распространял код плагина на Android, пока я не сменил расположение репозитория Maven.
Шаг третий: Обновите расположение репозитория Maven в build.gradle
Это на самом деле не связано с моим вопросом, но я смог создать разрешения apk, как только я изменил расположение хранилища Maven в <app root>/phonegap/platforms/android/build.gradle
Вот что я изменил в build.gradle...
Мои оригинальные настройки build.gradle:
buildscript {
repositories {
mavenCentral()
jcenter()
}
// Switch the Android Gradle plugin version requirement depending on the
// installed version of Gradle. This dependency is documented at
// http://tools.android.com/tech-docs/new-build-system/version-compatibility
// and https://issues.apache.org/jira/browse/CB-8143
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
}
}
// Allow plugins to declare Maven dependencies via build-extras.gradle.
allprojects {
repositories {
mavenCentral()
jcenter()
}
}
Который я изменил на:
buildscript {
repositories {
jcenter()
maven { url 'https://maven.google.com' }
}
// Switch the Android Gradle plugin version requirement depending on the
// installed version of Gradle. This dependency is documented at
// http://tools.android.com/tech-docs/new-build-system/version-compatibility
// and https://issues.apache.org/jira/browse/CB-8143
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
}
}
// Allow plugins to declare Maven dependencies via build-extras.gradle.
allprojects {
repositories {
jcenter()
maven { url 'https://maven.google.com' }
}
}
После этого я смог создать свой APK с правильными разрешениями плагина и использовать добавленный мной плагин.
Я действительно не знаю, где проблема в вашем проекте, но у меня было похожее поведение, когда я обновил версию Cordova и перенес свой проект из Eclipse в Android Studio.
Добавление некоторых плагинов приводит к нескольким удалениям, и весь мой проект не работает.
Я пробовал много способов исправить это, но безуспешно, каждый раз с другими исключениями.
Поэтому я решил это, создав новый проект с нуля. Добавил все плагины по одному и после, скопировал все www
папка из старого проекта.
Это заняло у меня около 30 минут, но оно того стоило.
Совет: я бы поставил node_modules
папка для .gitignore
файл. Вам не нужно толкать все зависимости, чтобы мерзнуть. Пользователи могут клонировать проект и просто запустить $ npm install
из корневого проекта.