Building my app on Linux works fine. I just started preparing for an iOS release, so I setup node, ionic, and cordova on my Mac, and running npm install works fine, all packages install with no conflicts or unmet dependencies. Here’s the relevant parts of my package.json:
"dependencies": {
"@angular/common": "4.1.2",
"@angular/compiler": "4.1.2",
"@angular/compiler-cli": "4.1.2",
"@angular/core": "4.1.2",
"@angular/forms": "4.1.2",
"@angular/http": "4.1.2",
"@angular/platform-browser": "4.1.2",
"@angular/platform-browser-dynamic": "4.1.2",
"@ionic-native/app-version": "^4.1.0",
"@ionic-native/core": "^4.1.0",
"@ionic-native/firebase": "^4.1.0",
"@ionic-native/in-app-browser": "^4.1.0",
"@ionic-native/splash-screen": "^4.1.0",
"@ionic-native/status-bar": "^4.1.0",
"@ionic/cloud": "^0.16.0",
"@ionic/cloud-angular": "^0.12.0",
"@ionic/storage": "^2.0.1",
"cordova-android": "^6.2.3",
"cordova-ios": "^4.4.0",
"cordova-plugin-app-version": "^0.1.9",
"cordova-plugin-console": "^1.0.5",
"cordova-plugin-device": "^1.1.4",
"cordova-plugin-firebase": "^0.1.23",
"cordova-plugin-inappbrowser": "^1.7.1",
"cordova-plugin-splashscreen": "^4.0.3",
"cordova-plugin-statusbar": "^2.2.1",
"cordova-plugin-whitelist": "^1.3.1",
"crypto-js": "^3.1.9-1",
"fast-xml-parser": "^2.4.1",
"ionic-angular": "3.3.0",
"ionic-plugin-deploy": "^0.6.7",
"ionic-plugin-keyboard": "^2.2.1",
"ionicons": "3.0.0",
"rxjs": "5.1.1",
"sw-toolbox": "3.6.0",
"zone.js": "^0.8.10"
},
"devDependencies": {
"@ionic/app-scripts": "1.3.7",
"@types/crypto-js": "^3.1.33",
"ionic": "3.9.0",
"typescript": "2.3.3"
},
"cordovaPlugins": [
"cordova-plugin-whitelist",
"cordova-plugin-statusbar",
"cordova-plugin-console",
"cordova-plugin-device",
"cordova-plugin-splashscreen",
"ionic-plugin-keyboard",
"ionic-plugin-deploy",
"cordova-plugin-app-version"
],
"cordovaPlatforms": [
{
"platform": "android",
"version": "6.2.1",
"locator": "android"
},
{
"platform": "browser",
"version": "",
"locator": "browser"
}
],
"description": "MCI: An Ionic project",
"config": {
"ionic_webpack": "./webpack.config.js"
},
"plugins": {
"cordova-plugin-console": {},
"cordova-plugin-device": {},
"cordova-plugin-inappbrowser": {},
"cordova-plugin-splashscreen": {},
"cordova-plugin-statusbar": {},
"cordova-plugin-whitelist": {},
"ionic-plugin-deploy": {},
"ionic-plugin-keyboard": {},
"cordova-plugin-firebase": {},
"cordova-plugin-app-version": {}
}
Running ionic build on Linux works fine. running it on OS X errors wit:
Error: ./~/@ionic/cloud/dist/esm/auth.js
Module not found: Error: Can't resolve 'ionic-native' in '/Users/nmartin/Projects/mci-mobile-app/node_modules/@ionic/cloud/dist/esm'
resolve 'ionic-native' in '/Users/nmartin/Projects/mci-mobile-app/node_modules/@ionic/cloud/dist/esm'
Parsed request is a module
using description file: /Users/nmartin/Projects/mci-mobile-app/node_modules/@ionic/cloud/package.json (relative path: ./dist/esm)
Field 'browser' doesn't contain a valid alias configuration
after using description file: /Users/nmartin/Projects/mci-mobile-app/node_modules/@ionic/cloud/package.json (relative path: ./dist/esm)
resolve as module
Looking at Error: ./~/@ionic/cloud/dist/esm/auth.js
It’s including ‘ionic-native’ which is now ‘@ionic-native/core’.
Why does this work on on Linux and not OS X, and how do I fix this?