#cordova #module #require
#кордова #модуль #требуется
Вопрос:
Я только что обновил Cordova до версии 9. Из-за этого плагин cordova-plugin-crypt-file перестал работать — при сборке приложения я получаю сообщение об ошибке
Using "requireCordovaModule" to load non-cordova module "path" is not supported. Instead, add this module to your dependencies and use regular "require" to load it.
Похоже, проблема связана с файлом hooks/after_prepare.js . Код является
var path = context.requireCordovaModule('path'),
fs = context.requireCordovaModule('fs'),
crypto = context.requireCordovaModule('crypto'),
Q = context.requireCordovaModule('q'),
cordova_util = context.requireCordovaModule('cordova-lib/src/cordova/util'),
platforms = context.requireCordovaModule('cordova-lib/src/platforms/platforms'),
Parser = context.requireCordovaModule('cordova-lib/src/cordova/metadata/parser'),
ParserHelper = context.requireCordovaModule('cordova-lib/src/cordova/metadata/parserhelper/ParserHelper'),
ConfigParser = context.requireCordovaModule('cordova-common').ConfigParser;
Итак, я изменил весь context.requirerecordovamodule на простой require. Выдает новое сообщение об ошибке:
Cannot find module 'cordova-lib/src/cordova/util'
Пожалуйста, кто-нибудь может помочь мне с исправлением? Или есть какой-либо альтернативный плагин?
Комментарии:
1. Извините, пока нет. Сначала я должен закончить проект. Я не хочу рисковать своими сроками, экспериментируя с кодом.
Ответ №1:
Пожалуйста, используйте следующий плагин:
https://github.com/PeterHdd/cordova-plugin-crypto-file
Он основан на cordova-plugin-crypt-file
.
Вышеупомянутый плагин был создан для работы с cordova-plugin-ionic-webview
, я обновил плагин, и теперь он работает с cordova 9, поэтому нет необходимости в понижении версии.
Чтобы установить его, выполните следующее:
npm i cordova-plugin-crypto-file@latest
в последней версии 1.4.0 исправлена ошибка cordova 9.
Комментарии:
1. Это работает некоторое время.. Вы не получаете, что файл зашифрован до завершения сборки? Файлы шифруются перед сборкой и расшифровываются при запуске.
2. Я только что протестировал это снова imgur.com/a/71SFcEe он работает в обычном режиме. Пожалуйста, скажите мне, что вы пытаетесь сделать, если у вас возникли какие-либо проблемы. @MD.Riyaz
3. @MD.Riyaz в чем была проблема?
4. @Peter_Haddad Да.
5. @MD.Riyaz да, но что это было?
Ответ №2:
У меня была такая же проблема. Вам необходимо понизить версию cordova до версии 8.1.2
npm uninstall -g cordova
npm cache clean --force
npm i -g cordova@8.1.2
Комментарии:
1. Да, это было и мое решение, но как только нам придется обновить Cordova и поскольку плагин не поддерживается, мы должны исправить это самостоятельно.
Ответ №3:
Это исправление работает для меня на Cordova 9.0, cordova-ios:
В файле:
cordova-plugin-crypt-file/hooks/after_prepare.js
заменить:
var path = context.requireCordovaModule('path'),
fs = context.requireCordovaModule('fs'),
crypto = context.requireCordovaModule('crypto'),
Q = context.requireCordovaModule('q'),
cordova_util = context.requireCordovaModule('cordova-lib/src/cordova/util'),
platforms = context.requireCordovaModule('cordova-lib/src/platforms/platforms'),
Parser = context.requireCordovaModule('cordova-lib/src/cordova/metadata/parser'),
ParserHelper = context.requireCordovaModule('cordova-lib/src/cordova/metadata/parserhelper/ParserHelper'),
ConfigParser = context.requireCordovaModule('cordova-common').ConfigParser;
с:
var path = require('path'),
fs = require('fs'),
crypto = require('crypto'),
Q = require('q'),
cordova_util = context.requireCordovaModule('cordova-lib/src/cordova/util'),
platforms = context.requireCordovaModule('cordova-lib/src/platforms/platforms'),
ConfigParser = context.requireCordovaModule('cordova-common').ConfigParser;
Затем удалите созданную папку платформы «ios» и снова добавьте платформу «ios».