Cordova 4.3.0 - build command returns error Unable to find module 'Q'

After updating the cordova to version 4.3.0, the command:

cordova build 

returns the following error:

  module.js:340 throw err; ^ Error: Cannot find module 'Q' at Function.Module._resolveFilename (module.js:338:15) at Function.Module._load (module.js:280:25) at Module.require (module.js:364:17) at require (module.js:380:17) at Object.<anonymous> (/Volumes/CaseSensitive/ios_projects/_Tests/testGruntCordova/testGruntCordova/platforms/ios/cordova/lib/check_reqs.js:25:13) at Module._compile (module.js:456:26) at Object.Module._extensions..js (module.js:474:10) at Module.load (module.js:356:32) at Function.Module._load (module.js:312:12) at Module.require (module.js:364:17) ERROR building one of the platforms: Error: /Volumes/CaseSensitive/ios_projects/_Tests/testGruntCordova/testGruntCordova/platforms/ios/cordova/build: Command failed with exit code 8 You may not have the required environment or OS to build this project Error: /Volumes/CaseSensitive/ios_projects/_Tests/testGruntCordova/testGruntCordova/platforms/ios/cordova/build: Command failed with exit code 8 at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/superspawn.js:131:23) at ChildProcess.EventEmitter.emit (events.js:98:17) at maybeClose (child_process.js:753:16) at Process.ChildProcess._handle.onexit (child_process.js:820:5) 

I already tried to remove and add the ios platform, but nothing has changed.

I tried to run:

 sudo npm install -g cordova / sudo npm install cordova sudo npm install -g Q / sudo npm install Q 

but nothing changes.

Any help? Thank you very much

+6
source share
3 answers

There was an error, and I released a fix:

Apache Cordova ios - Git repository

+7
source

This is a bug that appears on case-sensitive systems such as Unix, Linux, and some OS X (if they are set to be case-sensitive).

So far, to fix this, you need to find the files containing this line:

  Q = require('Q') 

You can find the files in the project directory using grep:

 grep -HnrI "require('Q" *; 

then use any text editor to manually change the specified line to:

 Q = require('q') 

Alternatively, you can edit related files in a simpler way by running the following command in the project directory:

 grep -rl "require('Q" * | xargs sed -i "" "s/'Q'/'q'/g"; 

One line above searches for and edits files that need to be changed.

+1
source

Removing and re-adding the platform also works again:

 cordova platform remove ios cordova platform add ios 

Now you can cordova build ios :)

As MeV mentioned, this was a mistake.

0
source

Source: https://habr.com/ru/post/983420/


All Articles