未分類

cordova9.0.0にアップデートしたらビルドできない

cordova9.0.0へバージョンアップしたら、ビルドできなくなった。
cordova --version
>9.0.0 (cordova-lib@9.0.1)

エラーメッセージは下記
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.

バグではなく、セキュリティを高めるための仕様の変更らしい。プラグインが対応すべき問題とのことで、プラグインを最新版にすることが基本の対策とのこと。しかし、今回原因となったcordova-plugin-crypt-file 1.3.3がまだ対応していなかったので下記の方法にて解決した。
https://github.com/PeterHdd/cordova-plugin-crypto-file/issues/8

対象プラグイン:cordova-plugin-crypt-file

方法

アプリトップディレクトリ/plugins/cordova-plugin-crypt-file/hooks/after_prepare.jsの変更を行う

変更前

module.exports = function(context) {

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;

変更後

module.exports = function(context) {

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;

ABOUT ME
Faust
1980年代生まれで東京都府中市育ち。大学は物理化学専攻してメーカへ。 Engineer of Python, Angular. Analyzing data and building app at Awesome Rainbows LCC. #SDGs #Python

COMMENT

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です