Closed mschipperheyn closed 5 years ago
The paths that bindings
is using to look for metrohash.node
seem incorrect, I would have expected them to contain node_modules/metrohash/
(instead, bindings
is trying to find the in packages/server/
).
I think this is an issue with your setup, not sure how I can help out. Try to find out if your setup is correctly configured to allow for natively compiled modules to be included.
I have moved my project to a monorepo. I cannot start my project anymore. I get the following error:
✔ success server compiled in 34s 802ms Could not locate the bindings file. Tried: → /Users/me/development/projects/project/packages/server/build/metrohash.node → /Users/me/development/projects/project/packages/server/build/Debug/metrohash.node → /Users/me/development/projects/project/packages/server/build/Release/metrohash.node → /Users/me/development/projects/project/packages/server/out/Debug/metrohash.node → /Users/me/development/projects/project/packages/server/Debug/metrohash.node → /Users/me/development/projects/project/packages/server/out/Release/metrohash.node → /Users/me/development/projects/project/packages/server/Release/metrohash.node → /Users/me/development/projects/project/packages/server/build/default/metrohash.node → /Users/me/development/projects/project/packages/server/compiled/10.15.1/darwin/x64/metrohash.node → /Users/me/development/projects/project/packages/server/addon-build/release/install-root/metrohash.node → /Users/me/development/projects/project/packages/server/addon-build/debug/install-root/metrohash.node → /Users/me/development/projects/project/packages/server/addon-build/default/install-root/metrohash.node → /Users/me/development/projects/project/packages/server/lib/binding/node-v64-darwin-x64/metrohash.node at bindings (/Users/me/development/projects/project/packages/server/Users/me/development/projects/project/node_modules/bindings/bindings.js:126:1) at Object.../../node_modules/metrohash/index.js (/Users/me/development/projects/project/packages/server/build/webpack:/Users/me/development/projects/project/node_modules/metrohash/index.js:1:1)
I'm using version 2.5.1, Mac OS. I've tried removing all the node_modules directories in the project.
node bindings searches in the first parent directory where a package.json is found. I'm assuming there's one within /Users/me/development/projects/project/packages/server/
My metrohash is not in the project root/node_modules not the packages/server/node_modules.
I tried nohoisting it. Didn't work either.
I don't see how I can help fixing this. If anything is required on the part of node-metrohash
to get things working, I'm glad to help, but it seems this is an issue with your specific environment.
It's possible. It just seems odd to me that this is happening with metrohash only. I was assuming the native bindings were the reason for the problem.
It's likely that the native bindings are the problem, but within the context of your environment.
Have you tried installing and using the Metrohash module outside of the mono repo (just to make sure that it actually builds and installs properly)?
Yes, I use it on a similar (non mono) repo.
If it works outside of the mono repo, it seems to be that the mono repo (setup/config) is the problem. Like I said, I'm happy to help but I have no idea how to solve this issue 😔
So, comparing a normal repo project and the mono repo project, the difference is as follows:
normal:
node_modules/metrohash/build/Release/metrohash.node
monorepo
there is no node_modules/metrohash/build
directory
So, this suggests node-gyp is not running correctly. When I ran node-gyp configure && node-gyp build
at the root of the monorepo, I get this.
node-gyp configure
gyp info it worked if it ends with ok
gyp info using node-gyp@3.6.3
gyp info using node@10.15.1 | darwin | x64
gyp info spawn /usr/local/bin/python2
gyp info spawn args [ '/Users/me/.config/yarn/global/node_modules/node-gyp/gyp/gyp_main.py',
gyp info spawn args 'binding.gyp',
gyp info spawn args '-f',
gyp info spawn args 'make',
gyp info spawn args '-I',
gyp info spawn args '/Users/me/project/project/build/config.gypi',
gyp info spawn args '-I',
gyp info spawn args '/Users/me/.config/yarn/global/node_modules/node-gyp/addon.gypi',
gyp info spawn args '-I',
gyp info spawn args '/Users/me/.node-gyp/10.15.1/include/node/common.gypi',
gyp info spawn args '-Dlibrary=shared_library',
gyp info spawn args '-Dvisibility=default',
gyp info spawn args '-Dnode_root_dir=/Users/me/.node-gyp/10.15.1',
gyp info spawn args '-Dnode_gyp_dir=/Users/me/.config/yarn/global/node_modules/node-gyp',
gyp info spawn args '-Dnode_lib_file=/Users/me/.node-gyp/10.15.1/<(target_arch)/node.lib',
gyp info spawn args '-Dmodule_root_dir=/Users/me/project/project',
gyp info spawn args '-Dnode_engine=v8',
gyp info spawn args '--depth=.',
gyp info spawn args '--no-parallel',
gyp info spawn args '--generator-output',
gyp info spawn args 'build',
gyp info spawn args '-Goutput_dir=.' ]
gyp: binding.gyp not found (cwd: /Users/me/project/project) while trying to load binding.gyp
gyp ERR! configure error
gyp ERR! stack Error: `gyp` failed with exit code: 1
gyp ERR! stack at ChildProcess.onCpExit (/Users/me/.config/yarn/global/node_modules/node-gyp/lib/configure.js:336:16)
gyp ERR! stack at ChildProcess.emit (events.js:189:13)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
gyp ERR! System Darwin 18.2.0
gyp ERR! command "/Users/me/.nvm/versions/node/v10.15.1/bin/node" "/usr/local/bin/node-gyp" "configure"
gyp ERR! cwd /Users/me/project/project
gyp ERR! node -v v10.15.1
gyp ERR! node-gyp -v v3.6.3
gyp ERR! not ok
Marcs-MacBook-Pro-2:social-front mschipperheyn$ node-gyp build
gyp info it worked if it ends with ok
gyp info using node-gyp@3.6.3
gyp info using node@10.15.1 | darwin | x64
gyp info spawn make
gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
make: *** No targets specified and no makefile found. Stop.
gyp ERR! build error
gyp ERR! stack Error: `make` failed with exit code: 2
gyp ERR! stack at ChildProcess.onExit (/Users/me/.config/yarn/global/node_modules/node-gyp/lib/build.js:258:23)
gyp ERR! stack at ChildProcess.emit (events.js:189:13)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:248:12)
gyp ERR! System Darwin 18.2.0
gyp ERR! command "/Users/me/.nvm/versions/node/v10.15.1/bin/node" "/usr/local/bin/node-gyp" "build"
gyp ERR! cwd /Users/me/project/project
gyp ERR! node -v v10.15.1
gyp ERR! node-gyp -v v3.6.3
gyp ERR! not ok
Does this in any way point into a direction of resolution?
binding.gyp not found
is the main issue here.
That file is located (in "normal" situations) in the metrohash
module directory, which is also where you need to run the node-gyp
commands.
Ah. So, when I run node-gyp rebuild in the metrohash directory, it completes ok
So, it's a triggering issue. Scratch that. Even after the node-gyp build, it gives the initial error. It really is two issues:
Just to close out this issue, I ran into some additional issues, specifically:
TypeError: Cannot read property 'indexOf' of undefined
685 | /******/
686 | /******/ // Execute the module function
> 687 | /******/ modules[moduleId].call(module.exports, module, module.exports, hotCreateRequire(moduleId));
688 | /******/
689 | /******/ // Flag the module as loaded
690 | /******/ module.l = true;
at Function.getFileName (webpack-internal:///../../node_modules/bindings/bindings.js:178:16)
at bindings (webpack-internal:///../../node_modules/bindings/bindings.js:82:48)
at eval (webpack-internal:///../../node_modules/metrohash/index.js:1:96)
at Object.../../node_modules/metrohash/index.js (/Users/marcschipperheyn/eclipse-workspace/project-rnw/packages/server/build/server.js:53728:1)
at __webpack_require__ (/Users/marcschipperheyn/eclipse-workspace/project-rnw/packages/server/build/server.js:687:30)
I ended up solving this by adding both metrohash
and node-bindings
to the webpack externals
array.
I have moved my project to a monorepo. I cannot start my project anymore. I get the following error:
I'm using version 2.5.1, Mac OS. I've tried removing all the node_modules directories in the project.