ошибка cordova-plugin-crypt-file-requirerecordovamodule

#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».