Ionic-Firebase应用程序错误:无法找到模块'../plugman/platforms/ios'

时间:2018-01-13 22:47:44

标签: cordova firebase ionic-framework cordova-plugins

按照以下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

1 个答案:

答案 0 :(得分:5)

我目前遇到同样的问题。

这是cordova-universal-links-plugin中的bug

cordova-universal-links-plugin依赖于新Cordova版本中已弃用的removed功能。已经有一个PR已修复,但尚未合并。

更新26 / Jan

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

这是一个快速修复解决方案,仅供临时使用。