1
votes

I've come across an error that I have no idea how it's come about, but it is blocking me to develop on a PC... I can build my app on a Mac, but when I try on a Windows box it fails with.

cordova build android --stacktrace

config file undefined requested for changes not found at platforms\android\undefined, ignoring config file undefined requested for changes not found at platforms\android\undefined, ignoring

The "path" argument must be of type string. Received type undefined

TypeError [ERR_INVALID_ARG_TYPE]: The "path" argument must be of type string. Received type undefined

at validateString (internal/validators.js:112:11)

That's even on a clean Windows machine cloned from GIT.

$ ionic info

Ionic:

Ionic CLI : 5.4.13 (\AppData\Roaming\npm\node_modules\ionic) Ionic Framework : @ionic/angular 4.11.7 @angular-devkit/build-angular : 0.803.21 @angular-devkit/schematics : 8.1.3 @angular/cli : 8.3.20 @ionic/angular-toolkit : 2.0.0

Cordova:

Cordova CLI : 9.0.0 ([email protected]) Cordova Platforms : android 8.1.0 Cordova Plugins : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 4.1.3, (and 12 other plugins)

Utility:

cordova-res : 0.8.1 native-run : 0.3.0

System:

NodeJS : v12.14.0 (C:\Program Files\nodejs\node.exe) npm : 6.13.4 OS : Windows 10


{
  "name": "xyz1",
  "version": "0.0.7",
  "author": "Keni Barwick",
  "homepage": "https://barwick.net/",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/common": "~8.1.2",
    "@angular/compiler": "~8.1.2",
    "@angular/core": "~8.1.2",
    "@angular/fire": "^5.2.1",
    "@angular/forms": "~8.1.2",
    "@angular/http": "^7.2.15",
    "@angular/platform-browser": "~8.1.2",
    "@angular/platform-browser-dynamic": "~8.1.2",
    "@angular/router": "~8.1.2",
    "@ionic-native/app-version": "^5.18.0",
    "@ionic-native/core": "^5.18.0",
    "@ionic-native/google-analytics": "^5.18.0",
    "@ionic-native/health": "^5.18.0",
    "@ionic-native/image-picker": "^5.18.0",
    "@ionic-native/ionic-webview": "^5.18.0",
    "@ionic-native/onesignal": "^5.18.0",
    "@ionic-native/splash-screen": "^5.18.0",
    "@ionic-native/status-bar": "^5.18.0",
    "@ionic/angular": "^4.11.7",
    "cordova-android": "^8.1.0",
    "cordova-plugin-androidx": "^1.0.2",
    "cordova-plugin-androidx-adapter": "^1.1.0",
    "cordova-plugin-app-version": "^0.1.9",
    "cordova-plugin-exitapp2": "^1.0.4",
    "cordova-plugin-firebasex": "^7.0.1",
    "cordova-plugin-google-analytics": "1.6.0",
    "cordova-plugin-health": "^1.1.3",
    "cordova-plugin-telerik-imagepicker": "^2.3.3",
    "cordova-res": "^0.8.1",
    "core-js": "^2.6.11",
    "firebase": "^6.5.0",
    "html-webpack-plugin": "^3.2.0",
    "kr.co.joycorp.cordova.exitapp": "^1.0.2",
    "ngx-pipes": "^2.6.0",
    "npm": "^6.13.4",
    "onesignal-cordova-plugin": "^2.8.1",
    "rxjs": "^6.5.4",
    "tslib": "^1.9.0",
    "zone.js": "~0.9.1"
  },
  "devDependencies": {
    "@angular-devkit/architect": "~0.801.2",
    "@angular-devkit/build-angular": "^0.803.21",
    "@angular-devkit/core": "~8.1.2",
    "@angular-devkit/schematics": "~8.1.2",
    "@angular/cli": "8.3.20",
    "@angular/compiler": "~8.1.2",
    "@angular/compiler-cli": "~8.1.2",
    "@angular/language-service": "~8.1.2",
    "@ionic/angular-toolkit": "~2.0.0",
    "@ionic/lab": "2.0.10",
    "@types/jasmine": "~3.3.8",
    "@types/jasminewd2": "~2.0.3",
    "@types/node": "~8.9.4",
    "codelyzer": "^5.2.1",
    "cordova-plugin-device": "^2.0.2",
    "cordova-plugin-ionic-keyboard": "^2.2.0",
    "cordova-plugin-ionic-webview": "^4.1.1",
    "cordova-plugin-splashscreen": "^5.0.2",
    "cordova-plugin-statusbar": "^2.4.2",
    "cordova-plugin-whitelist": "^1.3.3",
    "jasmine-core": "~3.4.0",
    "jasmine-spec-reporter": "~4.2.1",
    "karma": "~4.1.0",
    "karma-chrome-launcher": "~2.2.0",
    "karma-coverage-istanbul-reporter": "~2.0.1",
    "karma-jasmine": "~2.0.1",
    "karma-jasmine-html-reporter": "^1.5.1",
    "protractor": "~5.4.0",
    "ts-node": "~7.0.0",
    "tslint": "~5.15.0",
    "typescript": "~3.4.3"
  },
  "description": "An Ionic project",
  "cordova": {
    "plugins": {
      "cordova-plugin-telerik-imagepicker": {},
      "cordova-plugin-health": {
        "HEALTH_READ_PERMISSION": "App needs read access",
        "HEALTH_WRITE_PERMISSION": "App needs write access",
        "GMS_VERSION": "16.0.1"
      },
      "cordova-plugin-whitelist": {},
      "cordova-plugin-statusbar": {},
      "cordova-plugin-device": {},
      "cordova-plugin-splashscreen": {},
      "cordova-plugin-ionic-webview": {
        "ANDROID_SUPPORT_ANNOTATIONS_VERSION": "27.+"
      },
      "cordova-plugin-ionic-keyboard": {},
      "kr.co.joycorp.cordova.exitapp": {},
      "cordova-plugin-app-version": {},
      "cordova-plugin-google-analytics": {},
      "cordova-plugin-firebasex": {},
      "cordova-plugin-androidx-adapter": {},
      "onesignal-cordova-plugin": {}
    },
    "platforms": [
      "android"
    ],
    "browserslist": []
  }
}

I've updated all plugin's that show as red in npm outdated, checked lots of Stacks for answers but to no avail...

2
Is there a longer stack trace with the error? You will have to dive in to find out which path is wrong and where it's coming from. It looks to me like whatever is supposed to be setting platforms\android\xxx to point to some config file is goofing up so it can't find your config file and perhaps that's why the path ends up wrong. - jfriend00
Dig in this post it might help you: github.com/ionic-team/ionic-cli/issues/1082 - lastboy
Thank you both for your assistance - keni

2 Answers

2
votes

I knew as soon as I created a post I'd find the answer lol

So it turns out the issue was in the config.xml and specifically the following;

<config-file parent="NSHealthShareUsageDescription" platform="ios">
    <string>App needs read access</string>
</config-file>
<config-file parent="NSHealthUpdateUsageDescription" platform="ios">
    <string>App needs write access</string>
</config-file>

I removed the above, I was attempting to understand why I was gaining the following warning;

config file undefined requested for changes not found at platforms\android\undefined, ignoring

Once I removed it I was able to get passed the Path error... Odd right?

0
votes

In my case, changing:

<config-file

to

<gap:config-file

resolved the issue.

EDIT: Got another app, another case. I had to add "target" attribute to config-file. Example:

<config-file target="AndroidManifest.xml" parent="/manifest">

Also, if you got a project prepared for PhoneGapBuild and now you need to compile it yourself, remember to set your config under "platform" to diferentiate platform settings. Example:

<plaform name="android">
    <config-file target="AndroidManifest.xml" parent="/manifest">