按照以下Authenticate Using OAuth Providers with Cordova的说明操作后,在我的离子应用版本中获取上述错误。
在网上进行了一些搜索之后,我最终获得了以下回购ionic-plugin-deeplinks。
似乎不再需要维护。还有其他人有这个问题吗?任何解决方案?
离子信息 cli包:(/ usr / local / lib / node_modules)
@ionic/cli-utils : 1.19.0
ionic (Ionic CLI) : 3.19.0
全球套餐:
cordova (Cordova CLI) : 7.1.0
本地包裹:
@ionic/app-scripts : 3.1.2
Cordova Platforms : ios 4.5.4
Ionic Framework : ionic-angular 3.9.2
系统:
ios-deploy : 1.9.2
Node : v8.9.1
npm : 5.5.1
OS : macOS Sierra
Xcode : Xcode 9.2 Build version 9C40b
答案 0 :(得分:5)
我目前遇到同样的问题。
这是cordova-universal-links-plugin
中的bug。
cordova-universal-links-plugin
依赖于新Cordova版本中已弃用的removed功能。已经有一个PR已修复,但尚未合并。
GOTO以下目录
YOUR-PROJECT-PATH/plugins/cordova-universal-links-plugin/hooks/lib/ios/
YOUR-PROJECT-PATH/node_modules/cordova-universal-links-plugin/hooks/lib/ios/
然后您将在目录中看到xcodePreferences.js
文件。
修改xcodePreferences.js
,如下所示。
function loadProjectFile() {
var platform_ios;
var projectFile;
try {
// try pre-5.0 cordova structure
platform_ios = context.requireCordovaModule('cordova-lib/src/plugman/platforms')['ios'];
projectFile = platform_ios.parseProjectFile(iosPlatformPath());
} catch (e) {
try {
// let's try cordova 5.0 structure
platform_ios = context.requireCordovaModule('cordova-lib/src/plugman/platforms/ios');
projectFile = platform_ios.parseProjectFile(iosPlatformPath());
} catch (e) {
// Then cordova 7.0
var project_files = context.requireCordovaModule('glob').sync(path.join(iosPlatformPath(), '*.xcodeproj', 'project.pbxproj'));
if (project_files.length === 0) {
throw new Error('does not appear to be an xcode project (no xcode project file)');
}
var pbxPath = project_files[0];
var xcodeproj = context.requireCordovaModule('xcode').project(pbxPath);
xcodeproj.parseSync();
projectFile = {
'xcode': xcodeproj,
write: function () {
var fs = context.requireCordovaModule('fs');
var frameworks_file = path.join(iosPlatformPath(), 'frameworks.json');
var frameworks = {};
try {
frameworks = context.requireCordovaModule(frameworks_file);
} catch (e) { }
fs.writeFileSync(pbxPath, xcodeproj.writeSync());
if (Object.keys(frameworks).length === 0){
// If there is no framework references remain in the project, just remove this file
context.requireCordovaModule('shelljs').rm('-rf', frameworks_file);
return;
}
fs.writeFileSync(frameworks_file, JSON.stringify(this.frameworks, null, 4));
}
};
}
}
return projectFile;
}
构建错误将被删除。 归功于David @peterpeterparker
这是一个快速修复解决方案,仅供临时使用。