【问题标题】:cordova-plugin-crypt-file - requireCordovaModule errorcordova-plugin-crypt-file - requireCordovaModule 错误
【发布时间】:2019-08-15 00:58:10
【问题描述】:

我刚刚将 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.requireCordovaModule 更改为简单的 require。它会产生新的错误消息:

Cannot find module 'cordova-lib/src/cordova/util'

请问,有人可以帮我解决吗?或者,有没有替代插件?

【问题讨论】:

  • 抱歉,还没有。我必须首先完成这个项目。我不想通过试验代码来冒我的最后期限的风险。

标签: cordova module require


【解决方案1】:

我遇到了同样的问题。您需要将 cordova 降级到 8.1.2 版本

npm uninstall -g cordova
npm cache clean --force
npm i -g cordova@8.1.2

【讨论】:

  • 是的,这也是我的解决方案,但是一旦我们必须升级 Cordova 并且由于插件没有维护,我们必须自己修复它。
【解决方案2】:

请使用以下插件:

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 问题。

【讨论】:

  • 它已经工作了一段时间......你没有得到文件在构建完成之前被加密吗?文件在构建之前被加密,在运行时被解密。
  • 我刚刚再次测试了它imgur.com/a/71SFcEe 它工作正常。如果您有任何问题,请告诉我您正在尝试做什么。 @MD.Riyaz
  • @MD.Riyaz 出了什么问题?
  • @Peter_Haddad 是的。
  • @MD.Riyaz 是的,但那是什么?
【解决方案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”平台。

【讨论】:

    猜你喜欢
    • 2017-08-10
    • 2019-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多