npm / npm/cli

[BUG] #7495 Partially fixes #7413, but running scripts for workspaces in the / directoy is still broken.

Open
#7,563 5 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Bug Needs Triage
Dominant language
JavaScript
Stars
10.1k
Forks
4.7k
Avg merge
2d 2h
Merged PRs (30d)
19

Description

Is there an existing issue for this?
  • I have searched the existing issues
This issue exists in the latest npm version
  • I am using the latest npm
Current Behavior

This is a direct follow-on/reopen of #7413. It was hoped that this was fixed in 10.8.0 with #7495, however, this fix is not sufficient, and I've updated the project files to show this.

npm as of version 10.5.2 no longer lets you run scripts in a workspace package.json if your project is located at /. I've confirmed it worked in 10.5.1.
image

The specific error is the same:

...
> [7/8] RUN npm run -w packages/workspace build:                                                                                                                                                                    
1.304 npm error No workspaces found:                                                                                                                                                                                 
1.304 npm error   --workspace=packages/workspace
1.306 npm error A complete log of this run can be found in: /root/.npm/_logs/2024-05-28T10_57_18_985Z-debug-0.log
------
Dockerfile.txt:15
--------------------
  13 |     RUN echo $(npm --version)
  14 |     
  15 | >>> RUN npm run -w packages/workspace build
  16 |     
  17 |     ENTRYPOINT ["bash"]
--------------------
ERROR: failed to solve: process "/bin/sh -c npm run -w packages/workspace build" did not complete successfully: exit code: 1

I've included a zipped project, the 4 individual files and a screenshot of the project with all the files in their entirety visible. The top level package.json has scripts to build the dockerfile in ways that show the bug and that it's a regression.

image
npm-bug-example-update.zip

package.json
Dockerfile.txt
package-lock.json
package.json

Expected Behavior

The Dockerfile should build, and not fail due to being unable to find the workspace. This works successfully in 10.5.1, but does not work in 10.5.2, 10.6.0, 10.7.0, and 10.8.0

Steps To Reproduce

Both validations assume the project has been unzipped from the uploaded archive or recreated with the raw files in the right places, that docker is installed, and that the testing environment has an internet connection for downloading the base docker images.

I have personally only run this on an Ubuntu system, so Windows or mac users might have other setup requirements.

To validate the issue:

  1. run npm run npm-unfixed

To validate that things work in 10.5.1:

  1. run npm run npm-good
Environment
  • npm: 10.8.0
  • Node.js: node 18 or 20 will hit this issue. I didn't test any other releases
  • OS Name: whatever the node:iron and node:hydrogen dockerfiles use, but i've also recreated the issue with ubuntu:jammy and postgres:15-bullseye for shiggles as part of debugging the issue in my actual environment
  • System Model Name: ?
  • npm config:
#10 [6/7] RUN npm config ls
#10 1.001 ; node bin location = /usr/local/bin/node
#10 1.001 ; node version = v20.13.1
#10 1.001 ; npm local prefix = /
#10 1.001 ; npm version = 10.8.0
#10 1.001 ; cwd = /
#10 1.001 ; HOME = /root
#10 1.001 ; Run `npm config ls -l` to show all defaults.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the failure from the attached package.json and Dockerfile.txt files by running npm run npm-unfixed, then compare it with npm run npm-good on npm 10.5.1. Start by tracing npm run -w packages/workspace from the npm CLI workspace handling; done means the Dockerfile builds successfully when the project is located at / without the No workspaces found error.

Written by the indexing model from the issue text.

Assessment

Tech stack
docker, javascript, nodejs
Domain
cli, tooling
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.