Skip to content

src: add env and cli option to disable global search paths - #39754

Closed
zcbenz wants to merge 2 commits into
nodejs:masterfrom
zcbenz:no-global-search-patsh
Closed

src: add env and cli option to disable global search paths#39754
zcbenz wants to merge 2 commits into
nodejs:masterfrom
zcbenz:no-global-search-patsh

Conversation

@zcbenz

Copy link
Copy Markdown
Contributor

For embedders it is usually not allowed for Node.js to search modules from global paths like $HOME/.node_modules, otherwise the behavior of the app could be changed because of a global installed module. For example, a global installed electron module should not break all require('electron') calls.

This PR adds an option to disable searching modules from global paths.

Also note that this change will have a merge conflict with #39712.

@nodejs-github-botnodejs-github-bot added c++ Issues and PRs that require attention from people who are familiar with C++. lib / src Issues and PRs related to general changes in the lib or src directory. needs-ci PRs that need a full CI run. labels Aug 13, 2021
@zcbenz
zcbenzforce-pushed the no-global-search-patsh branch from 6deacca to 14b6713CompareAugust 13, 2021 02:27
@addaleaxaddaleax added author ready PRs that have at least one approval, no pending requests for changes, and a CI started. and removed needs-ci PRs that need a full CI run. labels Aug 13, 2021
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@addaleaxaddaleax added the embedding Issues and PRs related to embedding Node.js in another project. label Aug 13, 2021
Comment threadlib/internal/bootstrap/pre_execution.js Outdated
Comment threadlib/internal/options.js Outdated
Comment threadlib/internal/options.js Outdated
@bmeck

Copy link
Copy Markdown
Member

i know it might be slightly out of scope, but could we add a CLI option for this or something so that stock installs could test against this behavior?

@zcbenz
zcbenzforce-pushed the no-global-search-patsh branch from 14b6713 to d3ea98bCompareAugust 16, 2021 01:01
@zcbenz

Copy link
Copy Markdown
ContributorAuthor

i know it might be slightly out of scope, but could we add a CLI option for this or something so that stock installs could test against this behavior?

I think it is a good idea, I have added --no-global-search-paths cli option in this PR.

Note that the version number in doc/api/cli.md is left as 16.?.? since I don't know what to fill.

@zcbenzzcbenz changed the title src: add option to disable global search pathssrc: add env and cli option to disable global search pathsAug 16, 2021
@zcbenz
zcbenzforce-pushed the no-global-search-patsh branch from d3ea98b to b540122CompareAugust 16, 2021 08:01
Comment threaddoc/api/cli.md Outdated
@zcbenz
zcbenzforce-pushed the no-global-search-patsh branch from b540122 to 3dc0320CompareAugust 16, 2021 11:10
Comment threadsrc/env.cc Outdated
@zcbenz
zcbenzforce-pushed the no-global-search-patsh branch from 3dc0320 to 7e7127dCompareAugust 17, 2021 01:34
@jasnell

Copy link
Copy Markdown
Member

Needs a rebase and a new CI run. Removing the author ready label for now.

@jasnelljasnell removed the author ready PRs that have at least one approval, no pending requests for changes, and a CI started. label Aug 17, 2021
@zcbenz
zcbenzforce-pushed the no-global-search-patsh branch from 7e7127d to f961b96CompareAugust 18, 2021 07:19
@addaleaxaddaleax added the author ready PRs that have at least one approval, no pending requests for changes, and a CI started. label Sep 1, 2021
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

@aduh95

Copy link
Copy Markdown
Contributor

@zcbenz Can you please rebase again to fix the git conflict?

@zcbenz
zcbenzforce-pushed the no-global-search-patsh branch from f961b96 to bc14859CompareSeptember 17, 2021 00:23
@gengjiawengengjiawen added the request-ci Add this label to start a Jenkins CI on a PR. label Sep 17, 2021
@github-actionsgithub-actionsBot removed the request-ci Add this label to start a Jenkins CI on a PR. label Sep 17, 2021
@nodejs-github-bot

Copy link
Copy Markdown
Collaborator

Comment threadsrc/node_options.cc
@targostargos added the semver-minor PRs that contain new features and should be released in the next minor version. label Sep 18, 2021
targos pushed a commit that referenced this pull request Sep 18, 2021
PR-URL: #39754
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
targos pushed a commit that referenced this pull request Sep 18, 2021
PR-URL: #39754
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
@targos

Copy link
Copy Markdown
Member

Landed in 40c6e83...d9791d9

@targostargos closed this Sep 18, 2021
BethGriggs pushed a commit that referenced this pull request Sep 21, 2021
PR-URL: #39754
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
BethGriggs pushed a commit that referenced this pull request Sep 21, 2021
PR-URL: #39754
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
BethGriggs added a commit that referenced this pull request Sep 21, 2021
Notable changes:
crypto:
* (SEMVER-MINOR) add rsa-pss keygen parameters (Filip Skokan) #39927
doc:
* add Ayase-252 to collaborators (Qingyu Deng) #40078
fs:
* (SEMVER-MINOR) make `open` and `close` stream override optional when unused (Antoine du Hamel) #40013
http:
* (SEMVER-MINOR) limit requests per connection (Artur K) #40082
src:
* (SEMVER-MINOR) add --no-global-search-paths cli option (Cheng Zhao) #39754
* (SEMVER-MINOR) add option to disable global search paths (Cheng Zhao) #39754
* (SEMVER-MINOR) make napi_create_reference accept symbol (JckXia) #39926
stream:
* (SEMVER-MINOR) add signal support to pipeline generators (Robert Nagy) #39067
PR-URL: TODO
BethGriggs pushed a commit that referenced this pull request Sep 21, 2021
PR-URL: #39754
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
BethGriggs pushed a commit that referenced this pull request Sep 21, 2021
PR-URL: #39754
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Richard Lau <rlau@redhat.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Reviewed-By: James M Snell <jasnell@gmail.com>
Reviewed-By: Franziska Hinkelmann <franziska.hinkelmann@gmail.com>
BethGriggs added a commit that referenced this pull request Sep 21, 2021
Notable changes:
crypto:
* (SEMVER-MINOR) add rsa-pss keygen parameters (Filip Skokan) #39927
doc:
* add Ayase-252 to collaborators (Qingyu Deng) #40078
fs:
* (SEMVER-MINOR) make `open` and `close` stream override optional when unused (Antoine du Hamel) #40013
http:
* (SEMVER-MINOR) limit requests per connection (Artur K) #40082
src:
* (SEMVER-MINOR) add --no-global-search-paths cli option (Cheng Zhao) #39754
* (SEMVER-MINOR) add option to disable global search paths (Cheng Zhao) #39754
* (SEMVER-MINOR) make napi_create_reference accept symbol (JckXia) #39926
stream:
* (SEMVER-MINOR) add signal support to pipeline generators (Robert Nagy) #39067
PR-URL: TODO
@BethGriggsBethGriggs mentioned this pull request Sep 21, 2021
1 task
BethGriggs added a commit that referenced this pull request Sep 22, 2021
Notable changes:
crypto:
* (SEMVER-MINOR) add rsa-pss keygen parameters (Filip Skokan) #39927
doc:
* add Ayase-252 to collaborators (Qingyu Deng) #40078
fs:
* (SEMVER-MINOR) make `open` and `close` stream override optional when unused (Antoine du Hamel) #40013
http:
* (SEMVER-MINOR) limit requests per connection (Artur K) #40082
src:
* (SEMVER-MINOR) add --no-global-search-paths cli option (Cheng Zhao) #39754
* (SEMVER-MINOR) add option to disable global search paths (Cheng Zhao) #39754
* (SEMVER-MINOR) make napi_create_reference accept symbol (JckXia) #39926
stream:
* (SEMVER-MINOR) add signal support to pipeline generators (Robert Nagy) #39067
PR-URL: #40175
BethGriggs added a commit that referenced this pull request Sep 22, 2021
Notable changes:
crypto:
* (SEMVER-MINOR) add rsa-pss keygen parameters (Filip Skokan) #39927
doc:
* add Ayase-252 to collaborators (Qingyu Deng) #40078
fs:
* (SEMVER-MINOR) make `open` and `close` stream override optional when unused (Antoine du Hamel) #40013
http:
* (SEMVER-MINOR) limit requests per connection (Artur K) #40082
src:
* (SEMVER-MINOR) add --no-global-search-paths cli option (Cheng Zhao) #39754
* (SEMVER-MINOR) add option to disable global search paths (Cheng Zhao) #39754
* (SEMVER-MINOR) make napi_create_reference accept symbol (JckXia) #39926
stream:
* (SEMVER-MINOR) add signal support to pipeline generators (Robert Nagy) #39067
PR-URL: #40175
@ljharb

Copy link
Copy Markdown
Member

Any chance the default for this could be switched in a semver-major?

@zcbenz

Copy link
Copy Markdown
ContributorAuthor

Any chance the default for this could be switched in a semver-major?

It will probably break utilities installed with npm i -g.

Some Linux distributions also provide packages for node modules, and they rely on global search paths to work.
https://packages.ubuntu.com/search?keywords=node&searchon=names&suite=hirsute&section=all

@ljharb

Copy link
Copy Markdown
Member

Globally installed modules are pretty community-discouraged, as i think are distro-distributed npm packages, but fair callout.

codebytere added a commit to electron/electron that referenced this pull request Sep 23, 2021
codebytere added a commit to electron/electron that referenced this pull request Sep 27, 2021
codebytere added a commit to electron/electron that referenced this pull request Sep 27, 2021
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author readyPRs that have at least one approval, no pending requests for changes, and a CI started.c++Issues and PRs that require attention from people who are familiar with C++.embeddingIssues and PRs related to embedding Node.js in another project.lib / srcIssues and PRs related to general changes in the lib or src directory.semver-minorPRs that contain new features and should be released in the next minor version.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

12 participants

@zcbenz@nodejs-github-bot@bmeck@jasnell@aduh95@targos@ljharb@fhinkel@addaleax@tniessen@richardlau@gengjiawen