Saying we are in a repository generate-mygenerator
.
Thus we have a generator.js
file in the root directory.
What if I want to run gen gh-repo
?
I get the following error:
Error: Cannot find module 'lazy-cache'
at Function.Module._resolveFilename (module.js:538:15)
at Function.Module._load (module.js:468:25)
at Module.require (module.js:587:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/home/remi/d/dev/generate-package/utils.js:3:13)
at Module._compile (module.js:643:30)
at Object.Module._extensions..js (module.js:654:10)
at Module.load (module.js:556:32)
at tryModuleLoad (module.js:499:12)
at Function.Module._load (module.js:491:3)
/home/remi/d/dev/generate/bin/generate.js:78
if (err) return app.emit('error', err);
^
TypeError: Cannot read property 'emit' of undefined
at /home/remi/d/dev/generate/bin/generate.js:78:23
at Liftoff.<anonymous> (/home/remi/d/dev/generate/node_modules/base-runner/index.js:122:7)
at Liftoff.execute (/home/remi/d/dev/generate/node_modules/liftoff/index.js:203:12)
at module.exports (/home/remi/d/dev/generate/node_modules/flagged-respawn/index.js:51:3)
at Liftoff.<anonymous> (/home/remi/d/dev/generate/node_modules/liftoff/index.js:195:5)
at Liftoff.<anonymous> (/home/remi/d/dev/generate/node_modules/liftoff/index.js:170:7)
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
at Function.Module.runMain (module.js:686:11)
at startup (bootstrap_node.js:187:16)
Have I to rename generator.js
to generator.js.wait
then rename it back after the generator is done ?
Example in the generate-package
repository:
remi@poremil:~
$ cd d/dev/generate-package/
remi@poremil:~/d/dev/generate-package:master
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
remi@poremil:~/d/dev/generate-package:master
$ node -v
v8.9.4
remi@poremil:~/d/dev/generate-package:master
$ npm -v
5.6.0
remi@poremil:~/d/dev/generate-package:master
$ ls
docs generator.js index.js LICENSE package.json README.md templates test utils.js
Running generate-gh-repo
:
remi@poremil:~/d/dev/generate-package:master
$ gen gh-repo
[23:33:06] starting generate
[23:33:06] using generator ~/d/dev/generate-package/generator.js
Error: Cannot find module 'lazy-cache'
at Function.Module._resolveFilename (module.js:538:15)
at Function.Module._load (module.js:468:25)
at Module.require (module.js:587:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/home/remi/d/dev/generate-package/utils.js:3:13)
at Module._compile (module.js:643:30)
at Object.Module._extensions..js (module.js:654:10)
at Module.load (module.js:556:32)
at tryModuleLoad (module.js:499:12)
at Function.Module._load (module.js:491:3)
/home/remi/d/dev/generate/bin/generate.js:78
if (err) return app.emit('error', err);
^
TypeError: Cannot read property 'emit' of undefined
at /home/remi/d/dev/generate/bin/generate.js:78:23
at Liftoff.<anonymous> (/home/remi/d/dev/generate/node_modules/base-runner/index.js:122:7)
at Liftoff.execute (/home/remi/d/dev/generate/node_modules/liftoff/index.js:203:12)
at module.exports (/home/remi/d/dev/generate/node_modules/flagged-respawn/index.js:51:3)
at Liftoff.<anonymous> (/home/remi/d/dev/generate/node_modules/liftoff/index.js:195:5)
at Liftoff.<anonymous> (/home/remi/d/dev/generate/node_modules/liftoff/index.js:170:7)
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
at Function.Module.runMain (module.js:686:11)
at startup (bootstrap_node.js:187:16)
Or the same running generate-git
:
remi@poremil:~/d/dev/generate-package:master
$ gen git
[23:33:16] starting generate
[23:33:16] using generator ~/d/dev/generate-package/generator.js
Error: Cannot find module 'lazy-cache'
at Function.Module._resolveFilename (module.js:538:15)
at Function.Module._load (module.js:468:25)
at Module.require (module.js:587:17)
at require (internal/module.js:11:18)
at Object.<anonymous> (/home/remi/d/dev/generate-package/utils.js:3:13)
at Module._compile (module.js:643:30)
at Object.Module._extensions..js (module.js:654:10)
at Module.load (module.js:556:32)
at tryModuleLoad (module.js:499:12)
at Function.Module._load (module.js:491:3)
/home/remi/d/dev/generate/bin/generate.js:78
if (err) return app.emit('error', err);
^
TypeError: Cannot read property 'emit' of undefined
at /home/remi/d/dev/generate/bin/generate.js:78:23
at Liftoff.<anonymous> (/home/remi/d/dev/generate/node_modules/base-runner/index.js:122:7)
at Liftoff.execute (/home/remi/d/dev/generate/node_modules/liftoff/index.js:203:12)
at module.exports (/home/remi/d/dev/generate/node_modules/flagged-respawn/index.js:51:3)
at Liftoff.<anonymous> (/home/remi/d/dev/generate/node_modules/liftoff/index.js:195:5)
at Liftoff.<anonymous> (/home/remi/d/dev/generate/node_modules/liftoff/index.js:170:7)
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
at Function.Module.runMain (module.js:686:11)
at startup (bootstrap_node.js:187:16)
As long as generate-gh-repo
is installed globally and you don't have a task named gh-repo
in your generator.js
file, the global generator should run.
If you have a task in your generator.js
file that's the same name as a globally installed generator that you're trying to run, then the task will run instead. This is because generate will resolve the task at a higher priority than the global generator.
You can for the global generator to run by running gen gh-repo:default
(replace gh-repo
with the actual generator you're trying to run). This tells generate to look for the default task on the gh-repo
generator. If you didn't register the gh-repo
generator in your generator.js
file like this:
app.register('gh-repo', require('generate-gh-repo'));
then generate should find the globally installed generator.
It should just work, when you run gen gh-repo.
I just reproduced the buggy behavior simply trying to run a global generator in the root folder of an other generator where the local node modules have not been installed yet!
Example in the generate-package
repository:
Installing npm dependencies:
remi@poremil:~/d/dev/generate-package:master
$ npm install
npm WARN registry Unexpected warning for https://registry.npmjs.org/: Miscellaneous Warning EINTEGRITY: sha1-x6vpzIuHwLqodrGf3oP9RkeX44w= integrity checksum failed when using sha1: wanted sha1-x6vpzIuHwLqodrGf3oP9RkeX44w= but got sha512-D5JUjPyJbaJDkuAazpVnSfVkLlpeO3wDlPROTMLGKG1zMFNFRgrciKo1ltz/AzNTkqE0HzDx655QOL51N06how==. (4087 bytes)
npm WARN registry Using stale package data from https://registry.npmjs.org/ due to a request error during revalidation.
npm notice created a lockfile as package-lock.json. You should commit this file.
added 982 packages in 38.844s
and run again generate-gh-repo
:
remi@poremil:~/d/dev/generate-package:master
$ gen gh-repo
[02:31:11] starting generate
[02:31:11] using generator ~/d/dev/generate-package/generator.js
[02:31:11] ✔ running tasks: [ 'gh-repo' ]
[02:31:11] starting gh-repo
[02:31:11] starting gh-repo:default task
[02:31:11] starting gh-repo:gh-repo task
? Found saved GitHub authentication. Would you like to use it? (Y/n)
or generate-git
:
remi@poremil:~/d/dev/generate-package:master
$ gen git
[02:31:00] starting generate
[02:31:01] using generator ~/d/dev/generate-package/generator.js
[02:31:01] ✔ running tasks: [ 'git' ]
The problem is solved !