From 0de216f95fc28c57cc430f39f011d5f88ead083b Mon Sep 17 00:00:00 2001 From: Thomas Petazzoni Date: Sun, 25 Sep 2022 21:20:27 +0200 Subject: [PATCH] package/nodejs: add patch to adjust default NodeJS search path By default, NodeJS searches global modules in /usr/lib/node, but NPM installs them in /usr/lib/node_modules/. Therefore by default, if one installs modules with BR2_PACKAGE_NODEJS_MODULES_ADDITIONAL, they are not accessible by NodeJS, unless by passing a NODE_PATH=/usr/lib/node_modules/ variable. Since this is not obvious, and it's nicer when things work out of the box, we simply patch NodeJS to look for modules at the right place. See https://stackoverflow.com/questions/15636367/nodejs-require-a-global-module-package for some discussions on this topic. Signed-off-by: Thomas Petazzoni Reviewed-by: Romain Naour Signed-off-by: Yann E. MORIN --- ...ules-cjs-loader.js-adjust-default-pa.patch | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 package/nodejs/0004-lib-internal-modules-cjs-loader.js-adjust-default-pa.patch diff --git a/package/nodejs/0004-lib-internal-modules-cjs-loader.js-adjust-default-pa.patch b/package/nodejs/0004-lib-internal-modules-cjs-loader.js-adjust-default-pa.patch new file mode 100644 index 0000000000..5b93998e5e --- /dev/null +++ b/package/nodejs/0004-lib-internal-modules-cjs-loader.js-adjust-default-pa.patch @@ -0,0 +1,36 @@ +From a31425bdfcb5d695ab25c3d295898326784cffec Mon Sep 17 00:00:00 2001 +From: Thomas Petazzoni +Date: Sun, 25 Sep 2022 11:10:06 +0200 +Subject: [PATCH] lib/internal/modules/cjs/loader.js: adjust default path to + search modules + +NPM installs modules in /usr/lib/node_modules/, but by default NodeJS +searches for them only in /usr/lib/node/. We could also set the +NODE_PATH environment variable, but it is more convienient to have +NodeJS configured by default to find modules where they are installed. + +This issue is discussed at +https://stackoverflow.com/questions/15636367/nodejs-require-a-global-module-package. + +Signed-off-by: Thomas Petazzoni +--- + lib/internal/modules/cjs/loader.js | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js +index f1971c40a4..5fe3884156 100644 +--- a/lib/internal/modules/cjs/loader.js ++++ b/lib/internal/modules/cjs/loader.js +@@ -1261,7 +1261,8 @@ Module._initPaths = function() { + path.resolve(process.execPath, '..') : + path.resolve(process.execPath, '..', '..'); + +- const paths = [path.resolve(prefixDir, 'lib', 'node')]; ++ const paths = [path.resolve(prefixDir, 'lib', 'node'), ++ path.resolve(prefixDir, 'lib', 'node_modules')]; + + if (homeDir) { + ArrayPrototypeUnshift(paths, path.resolve(homeDir, '.node_libraries')); +-- +2.37.3 +