From: "Yann E. MORIN" <yann.morin.1998@free.fr>
To: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
Cc: Alexandru Ardelean <ardeleanalex@gmail.com>,
Angelo Compagnucci <angelo.compagnucci@gmail.com>,
Martin Bark <martin@barkynet.com>,
Daniel Price <daniel.price@gmail.com>,
Buildroot List <buildroot@buildroot.org>
Subject: Re: [Buildroot] [PATCH 3/4] package/nodejs: add patch to adjust default NodeJS search path
Date: Sun, 25 Sep 2022 20:15:57 +0200 [thread overview]
Message-ID: <20220925181557.GB1419013@scaer> (raw)
In-Reply-To: <20220925171932.1630739-3-thomas.petazzoni@bootlin.com>
On 2022-09-25 19:19 +0200, Thomas Petazzoni spake thusly:
> 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 <thomas.petazzoni@bootlin.com>
> ---
> I am not 100% sure this is the correct approach, and I would
> definitely like to get the feedback from some NodeJS people.
> ---
> ...ules-cjs-loader.js-adjust-default-pa.patch | 35 +++++++++++++++++++
> 1 file changed, 35 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..b4692a4e5f
> --- /dev/null
> +++ b/package/nodejs/0004-lib-internal-modules-cjs-loader.js-adjust-default-pa.patch
> @@ -0,0 +1,35 @@
> +From 4ed7de24fe18bb75b6e38922eb33141e2cec43dd Mon Sep 17 00:00:00 2001
> +From: Thomas Petazzoni <thomas.petazzoni@bootlin.com>
> +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 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 <thomas.petazzoni@bootlin.com>
> +---
> + lib/internal/modules/cjs/loader.js | 2 +-
> + 1 file changed, 1 insertion(+), 1 deletion(-)
> +
> +diff --git a/lib/internal/modules/cjs/loader.js b/lib/internal/modules/cjs/loader.js
> +index f1971c40a4..52fcd56125 100644
> +--- a/lib/internal/modules/cjs/loader.js
> ++++ b/lib/internal/modules/cjs/loader.js
> +@@ -1261,7 +1261,7 @@ 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_modules')];
It looks like this is an array, so maybe we could keep the original
path, and add the npm installation path:
const paths = [path.resolve(prefixDir, 'lib', 'node'),
path.resolve(prefixDir, 'lib', 'node_modules'),];
This, in case some ot-of-tree packages simply copy files into the
original .../node/ directory.
Alternatively, we could symlink node_modules to node.
Regards,
Yann E. MORIN.
> + if (homeDir) {
> + ArrayPrototypeUnshift(paths, path.resolve(homeDir, '.node_libraries'));
> +--
> +2.37.3
> +
> --
> 2.37.3
>
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
--
.-----------------.--------------------.------------------.--------------------.
| Yann E. MORIN | Real-Time Embedded | /"\ ASCII RIBBON | Erics' conspiracy: |
| +33 662 376 056 | Software Designer | \ / CAMPAIGN | ___ |
| +33 561 099 427 `------------.-------: X AGAINST | \e/ There is no |
| http://ymorin.is-a-geek.org/ | _/*\_ | / \ HTML MAIL | v conspiracy. |
'------------------------------^-------^------------------^--------------------'
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
next prev parent reply other threads:[~2022-09-25 18:16 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-09-25 17:19 [Buildroot] [PATCH 1/4] package/nodejs: fixup qemu dependencies Thomas Petazzoni
2022-09-25 17:19 ` [Buildroot] [PATCH 2/4] package/nodejs: bump to v16.17.1 Thomas Petazzoni via buildroot
2022-09-25 18:17 ` Yann E. MORIN
2022-10-11 19:19 ` Peter Korsgaard
2022-10-12 8:26 ` Peter Korsgaard
2022-10-14 19:33 ` Yann E. MORIN
2022-09-25 17:19 ` [Buildroot] [PATCH 3/4] package/nodejs: add patch to adjust default NodeJS search path Thomas Petazzoni
2022-09-25 18:15 ` Yann E. MORIN [this message]
2022-09-25 19:23 ` Thomas Petazzoni
2022-09-25 17:19 ` [Buildroot] [PATCH 4/4] support/testing/tests: add NodeJS tests Thomas Petazzoni
2022-09-25 18:16 ` [Buildroot] [PATCH 1/4] package/nodejs: fixup qemu dependencies Yann E. MORIN
2022-10-11 18:53 ` Peter Korsgaard
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220925181557.GB1419013@scaer \
--to=yann.morin.1998@free.fr \
--cc=angelo.compagnucci@gmail.com \
--cc=ardeleanalex@gmail.com \
--cc=buildroot@buildroot.org \
--cc=daniel.price@gmail.com \
--cc=martin@barkynet.com \
--cc=thomas.petazzoni@bootlin.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.