Help: cannot build for iOS or Android: "Cannot find module 'q-io/fs'

Hello,
I currently have issues building my project for iOS and Android.

Robins-MacBook-Air:app robin$ meteor add-platform ios
=> Errors executing Cordova commands:         
                                              
   While adding platform iOS to Cordova project:
   Error: Cannot find module 'q-io/fs'        
   at Function.Module._resolveFilename (module.js:325:15)
   at Function.Module._load (module.js:276:25)
   at Module.require (module.js:353:17)
   at require (internal/module.js:12:17)
   at module.exports
   (/Users/<path-to-app>app/.meteor/local/cordova-build/plugins/cordova_app_version_plugin/hooks/before_prepare/setVersionOnApp.js:4:11)
   at runScriptViaModuleLoader
   (/Users/robin/.meteor/packages/meteor-tool/.1.4.2_3.17xo86h++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/cordova-lib/src/hooks/HooksRunner.js:187:18)
   at runScript
   (/Users/robin/.meteor/packages/meteor-tool/.1.4.2_3.17xo86h++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/cordova-lib/src/hooks/HooksRunner.js:165:16)
   at
   /Users/robin/.meteor/packages/meteor-tool/.1.4.2_3.17xo86h++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/cordova-lib/src/hooks/HooksRunner.js:133:20
   at _fulfilled
   (/Users/robin/.meteor/packages/meteor-tool/.1.4.2_3.17xo86h++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/q/q.js:787:54)
   at self.promiseDispatch.done
   (/Users/robin/.meteor/packages/meteor-tool/.1.4.2_3.17xo86h++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/q/q.js:816:30)
   at Promise.promise.promiseDispatch
   (/Users/robin/.meteor/packages/meteor-tool/.1.4.2_3.17xo86h++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/q/q.js:749:13)
   at
   /Users/robin/.meteor/packages/meteor-tool/.1.4.2_3.17xo86h++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/q/q.js:509:49
   at flush
   (/Users/robin/.meteor/packages/meteor-tool/.1.4.2_3.17xo86h++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/q/q.js:108:17)
   at nextTickCallbackWith0Args (node.js:436:9)
   at process._tickCallback (node.js:365:13)
   => awaited here:
   at Function.Promise.await
   (/Users/robin/.meteor/packages/meteor-tool/.1.4.2_3.17xo86h++os.osx.x86_64+web.browser+web.cordova/mt-os.osx.x86_64/dev_bundle/lib/node_modules/meteor-promise/promise_server.js:35:12)
   at CordovaProject.runCommands (/tools/cordova/project.js:715:22)
   at CordovaProject.addPlatform (/tools/cordova/project.js:372:10)
   at CordovaProject.ensurePlatformsAreSynchronized (/tools/cordova/project.js:403:12)
   at /tools/cli/commands-cordova.js:60:20
   at /tools/utils/buildmessage.js:271:13
   at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
   at /tools/utils/buildmessage.js:264:29
   at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
   at /tools/utils/buildmessage.js:262:18
   at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
   at /tools/utils/buildmessage.js:253:23
   at [object Object].withValue (/tools/utils/fiber-helpers.js:89:14)
   at Object.capture (/tools/utils/buildmessage.js:252:19)
   at Object.main.captureAndExit (/tools/cli/main.js:271:29)
   at Command.func (/tools/cli/commands-cordova.js:42:8)
   at /tools/cli/main.js:1483:23

First time I run into this. Have traced down Q to the ASAP package, and it seems to be used for promises. Not sure how, or where it is being used. Any ideas or clues?

q-io is an npm package - have you added it?

1 Like

I have not added it, it is being added through some other package.
It looks like the npm package asap is requesting it, and asap seems to be requested from another npm package named promise.

Which seems to lead to … react? Am I lost here, or what :slight_smile: .

I think I am :wink:

Maybe try clearing out and rebuilding node_modules?

Yeah, I’ve tried that but unfortunately it didn’t help.
Also tried reinstalling meteor, removed the .meteor/local folder and so on.
I’ll keep this thread updated as I try and solve this :thumbsup: .

1 Like

So the solution here was to install another, unreferenced npm package named q-io. It seems like it was wrongly referenced from the asap package. Now, after meteor npm install q-io --save it works :smile: !

1 Like