Hi All I m working on a…

2 minute read

Hi All, I’m working on a CI pipeline and I want to get the affected libs with the handy one liner npx nx print-affected which works great locally, however when I run this in a container I get the following error:

```docker run -it node:alpine sh / # npx nx print-affected sh: node-waf: Permission denied npm ERR! code ELIFECYCLE npm ERR! syscall spawn npm ERR! file sh npm ERR! errno ENOENT npm ERR! iconv-jp@1.1.3 preinstall: node-waf configure npm ERR! spawn ENOENT npm ERR! npm ERR! Failed at the iconv-jp@1.1.3 preinstall script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above.

npm ERR! A complete log of this run can be found in: npm ERR! /root/.npm/logs/2020-06-26T13_52_41_269Z-debug.log Install for [ ‘nx@latest’ ] failed with code 1 / # whoami root / # npx cowsay “Hello” npx: installed 10 in 2.695s __ < Hello > ——- \ ^^ \ (oo)___ ()\ )\/
||—-w | || || / # ``` at the end I just check npx cowsay works to verify npx is happy.

Googling is turning up scant results for node-waf: Permission denied so I’m a bit stumped

Responses:

What ci?

Gitlab, but this output is on my local machine, in an alpine docker container

Well i believe you’re missing your node_modules in the docket image, a straight alpine image will not have nx installed

true but isn’t the point of npx that you don’t need to have node modules installed?

You’ll have to use a docker file to using alpine as your base image install what you need copy over your files and you’ll be good to go. Nope it just allows you to run your node modules lol

Also welcome to the community :grin:

Thanks for the welcome!

ah I think I’ve solved it!

so npx doesn’t require node_modules to be present, but it checks the node path first (looking for nx ) and when it doesn’t find it, it goes to the npm registry to try find the right dependency. In my case, it was not finding it locally in the path, so it went looking for https://www.npmjs.com/package/nx, which is totally unrelated to NX.

what I actually need is npx @nrwl/cli print-affected , which totally works

```➜ docker run -it node:alpine sh / # npx @nrwl/cli print-affected npx: installed 124 in 9.236s

> NX The current directory isn’t part of an Nx workspace.

To create a workspace run: npx create-nx-workspace@latest <workspace name>

> NX NOTE For more information please visit https://nx.dev/``` In actual CI, I will have the repo copied to the container, so this will work. (I’m doing some CI config generation in this stage, and the actual yarn install comes later in another container)

Updated: