Can't resolve devDependencies when running npm scripts in container?
lincolnthree opened this issue · 28 comments
Hey folks,
Not exactly sure if this is user error, something I've missed, or a bug... but... here goes:
Essentially I am having trouble getting an S2I build to run because some things seem to be missing, and I'm not sure why.
The image build actually succeeds, but when the node app actually spins up and starts running NPM_RUN scripts, it fails to find things like "rimraf" and "cpy" which are specified as devDependencies in the package.json file. I've even tried manually running npm install in the container, as well.
git version 2.9.3
Environment:
DEV_MODE=false
NODE_ENV=production
DEBUG_PORT=5858
Running as user uid=1000140000 gid=0(root) groups=0(root),1000140000
Launching via npm...
npm info it worked if it ends with ok
npm info using npm@5.6.0
npm info using node@v10.1.0
npm info lifecycle launcher-frontend@0.0.7~prestart:openshift: launcher-frontend@0.0.7
npm info lifecycle launcher-frontend@0.0.7~start:openshift: launcher-frontend@0.0.7
> launcher-frontend@0.0.7 start:openshift /opt/app-root/src
> npm run setup && npm run build:prod
npm info it worked if it ends with ok
npm info using npm@5.6.0
npm info using node@v10.1.0
npm info lifecycle launcher-frontend@0.0.7~presetup: launcher-frontend@0.0.7
npm info lifecycle launcher-frontend@0.0.7~setup: launcher-frontend@0.0.7
> launcher-frontend@0.0.7 setup /opt/app-root/src
> npm install
npm info it worked if it ends with ok
npm info using npm@5.6.0
npm info using node@v10.1.0
npm info lifecycle launcher-frontend@0.0.7~preinstall: launcher-frontend@0.0.7
npm http fetch GET 200 https://registry.npmjs.org/rhoaster 172ms
npm http fetch GET 200 https://registry.npmjs.org/nodeshift 179ms
npm http fetch GET 200 https://registry.npmjs.org/openshift-config-loader 38ms
npm http fetch GET 200 https://registry.npmjs.org/openshift-rest-client 38ms
npm http fetch GET 200 https://registry.npmjs.org/openshift-rest-client/-/openshift-rest-client-1.1.1.tgz 34ms
npm http fetch GET 200 https://registry.npmjs.org/yargs 57ms
npm http fetch GET 200 https://registry.npmjs.org/openshift-config-loader 81ms
npm http fetch GET 200 https://registry.npmjs.org/git-repo-info 88ms
npm http fetch GET 200 https://registry.npmjs.org/js-yaml 89ms
npm http fetch GET 200 https://registry.npmjs.org/chalk 94ms
npm http fetch GET 200 https://registry.npmjs.org/find-up 31ms
npm http fetch GET 200 https://registry.npmjs.org/cliui 32ms
npm http fetch GET 200 https://registry.npmjs.org/string-width 24ms
npm http fetch GET 200 https://registry.npmjs.org/which-module 28ms
npm http fetch GET 200 https://registry.npmjs.org/yargs-parser 29ms
npm http fetch GET 200 https://registry.npmjs.org/openshift-rest-client 126ms
npm http fetch GET 200 https://registry.npmjs.org/rimraf 128ms
npm http fetch GET 200 https://registry.npmjs.org/tar 129ms
npm http fetch GET 200 https://registry.npmjs.org/esprima 35ms
npm http fetch GET 200 https://registry.npmjs.org/ansi-styles 38ms
npm http fetch GET 200 https://registry.npmjs.org/locate-path 34ms
npm http fetch GET 200 https://registry.npmjs.org/supports-color 39ms
npm http fetch GET 200 https://registry.npmjs.org/strip-ansi 26ms
npm http fetch GET 200 https://registry.npmjs.org/os-locale 87ms
npm http fetch GET 200 https://registry.npmjs.org/is-fullwidth-code-point 25ms
npm http fetch GET 200 https://registry.npmjs.org/camelcase 25ms
npm http fetch GET 200 https://registry.npmjs.org/chownr 34ms
npm http fetch GET 200 https://registry.npmjs.org/fs-minipass 36ms
npm http fetch GET 200 https://registry.npmjs.org/minipass 36ms
npm http fetch GET 200 https://registry.npmjs.org/minizlib 33ms
npm http fetch GET 200 https://registry.npmjs.org/safe-buffer 34ms
npm http fetch GET 200 https://registry.npmjs.org/yallist 35ms
npm http fetch GET 200 https://registry.npmjs.org/p-locate 29ms
npm http fetch GET 200 https://registry.npmjs.org/glob 31ms
npm http fetch GET 200 https://registry.npmjs.org/path-exists 25ms
npm http fetch GET 200 https://registry.npmjs.org/has-flag 41ms
npm http fetch GET 200 https://registry.npmjs.org/ansi-regex 41ms
npm http fetch GET 200 https://registry.npmjs.org/execa 41ms
npm http fetch GET 200 https://registry.npmjs.org/mem 39ms
npm http fetch GET 200 https://registry.npmjs.org/p-limit 26ms
npm http fetch GET 200 https://registry.npmjs.org/npm-run-path 27ms
npm http fetch GET 200 https://registry.npmjs.org/mimic-fn 28ms
npm http fetch GET 200 https://registry.npmjs.org/get-stream 29ms
npm http fetch GET 200 https://registry.npmjs.org/p-try 25ms
npm http fetch GET 200 https://registry.npmjs.org/p-finally 31ms
npm http fetch GET 200 https://registry.npmjs.org/strip-eof 31ms
npm http fetch GET 200 https://registry.npmjs.org/cross-spawn 32ms
npm http fetch GET 200 https://registry.npmjs.org/path-key 23ms
npm http fetch GET 200 https://registry.npmjs.org/shebang-command 22ms
npm http fetch GET 200 https://registry.npmjs.org/shebang-regex 19ms
npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but npm-shrinkwrap.json was generated for lockfileVersion@0. I'll try to do my best with it!
npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but npm-shrinkwrap.json was generated for lockfileVersion@0. I'll try to do my best with it!
npm info linkStuff launcher-frontend@0.0.7
npm info lifecycle launcher-frontend@0.0.7~install: launcher-frontend@0.0.7
npm info lifecycle launcher-frontend@0.0.7~postinstall: launcher-frontend@0.0.7
> launcher-frontend@0.0.7 postinstall /opt/app-root/src
> echo 'All done!'
All done!
npm info lifecycle undefined~preshrinkwrap: undefined
npm info lifecycle undefined~shrinkwrap: undefined
npm info lifecycle undefined~postshrinkwrap: undefined
npm WARN ngx-modal@0.0.29 requires a peer of @angular/core@^2.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN ngx-modal@0.0.29 requires a peer of @angular/router@^3.0.0 but none is installed. You must install peer dependencies yourself.
up to date in 2.952s
┌───────────────────────────────────────────────────────────────┐
│ npm update check failed │
│ Try running with sudo or get access │
│ to the local update config store via │
│ sudo chown -R $USER:$(id -gn $USER) /opt/app-root/src/.config │
└───────────────────────────────────────────────────────────────┘
npm info ok
npm info lifecycle launcher-frontend@0.0.7~postsetup: launcher-frontend@0.0.7
┌───────────────────────────────────────────────────────────────┐
│ npm update check failed │
│ Try running with sudo or get access │
│ to the local update config store via │
│ sudo chown -R $USER:$(id -gn $USER) /opt/app-root/src/.config │
└───────────────────────────────────────────────────────────────┘
npm info ok
npm info it worked if it ends with ok
npm info using npm@5.6.0
npm info using node@v10.1.0
npm info lifecycle launcher-frontend@0.0.7~prebuild:prod: launcher-frontend@0.0.7
> launcher-frontend@0.0.7 prebuild:prod /opt/app-root/src
> npm run clean-and-copy
npm info it worked if it ends with ok
npm info using npm@5.6.0
npm info using node@v10.1.0
npm info lifecycle launcher-frontend@0.0.7~preclean-and-copy: launcher-frontend@0.0.7
npm info lifecycle launcher-frontend@0.0.7~clean-and-copy: launcher-frontend@0.0.7
> launcher-frontend@0.0.7 clean-and-copy /opt/app-root/src
> npm run clean-dist && npm run copy-files
npm info it worked if it ends with ok
npm info using npm@5.6.0
npm info using node@v10.1.0
npm info lifecycle launcher-frontend@0.0.7~preclean-dist: launcher-frontend@0.0.7
npm info lifecycle launcher-frontend@0.0.7~clean-dist: launcher-frontend@0.0.7
> launcher-frontend@0.0.7 clean-dist /opt/app-root/src
> rimraf dist
sh: rimraf: command not found
npm info lifecycle launcher-frontend@0.0.7~clean-dist: Failed to exec clean-dist script
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! launcher-frontend@0.0.7 clean-dist: `rimraf dist`
npm ERR! spawn ENOENT
npm ERR!
npm ERR! Failed at the launcher-frontend@0.0.7 clean-dist script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
┌───────────────────────────────────────────────────────────────┐
│ npm update check failed │
│ Try running with sudo or get access │
│ to the local update config store via │
│ sudo chown -R $USER:$(id -gn $USER) /opt/app-root/src/.config │
└───────────────────────────────────────────────────────────────┘
npm ERR! A complete log of this run can be found in:
npm ERR! /opt/app-root/src/.npm/_logs/2018-05-17T17_33_56_057Z-debug.log
npm info lifecycle launcher-frontend@0.0.7~clean-and-copy: Failed to exec clean-and-copy script
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! launcher-frontend@0.0.7 clean-and-copy: `npm run clean-dist && npm run copy-files`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the launcher-frontend@0.0.7 clean-and-copy script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
┌───────────────────────────────────────────────────────────────┐
│ npm update check failed │
│ Try running with sudo or get access │
│ to the local update config store via │
│ sudo chown -R $USER:$(id -gn $USER) /opt/app-root/src/.config │
└───────────────────────────────────────────────────────────────┘
npm ERR! A complete log of this run can be found in:
npm ERR! /opt/app-root/src/.npm/_logs/2018-05-17T17_33_56_105Z-debug.log
npm info lifecycle launcher-frontend@0.0.7~prebuild:prod: Failed to exec prebuild:prod script
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! launcher-frontend@0.0.7 prebuild:prod: `npm run clean-and-copy`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the launcher-frontend@0.0.7 prebuild:prod script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
┌───────────────────────────────────────────────────────────────┐
│ npm update check failed │
│ Try running with sudo or get access │
│ to the local update config store via │
│ sudo chown -R $USER:$(id -gn $USER) /opt/app-root/src/.config │
└───────────────────────────────────────────────────────────────┘
npm ERR! A complete log of this run can be found in:
npm ERR! /opt/app-root/src/.npm/_logs/2018-05-17T17_33_56_142Z-debug.log
npm info lifecycle launcher-frontend@0.0.7~start:openshift: Failed to exec start:openshift script
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! launcher-frontend@0.0.7 start:openshift: `npm run setup && npm run build:prod`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the launcher-frontend@0.0.7 start:openshift script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
┌───────────────────────────────────────────────────────────────┐
│ npm update check failed │
│ Try running with sudo or get access │
│ to the local update config store via │
│ sudo chown -R $USER:$(id -gn $USER) /opt/app-root/src/.config │
└───────────────────────────────────────────────────────────────┘
npm ERR! A complete log of this run can be found in:
npm ERR! /opt/app-root/src/.npm/_logs/2018-05-17T17_33_56_180Z-debug.log
I'm not a node expert so I'm a bit at a loss.
This is the repo: https://github.com/snowdrop/snowdrop-site-angular (deployment instructions I'm using are in the readme.)
These are the commands to run the S2I build that I'm using:
find . | grep openshiftio | grep application | xargs -n 1 oc apply -f
oc new-app --template=snowdrop-site-angular
Any insight would be appreciated!
@lincolnthree by default, we do a "production" install, which doesn't install devDepencies
If you add NODE_ENV=development
to your deploy, it will install dev dependecies during deployment
or move those devDepencies to regular dependencies
Hey @lholmquist ! Thanks. I actually just tried that and got a little farther (Yay!), but it's failing to install dependencies because there's no FS access now:
npm ERR! path /opt/app-root/src/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/opt/app-root/src/node_modules'
npm ERR! { Error: EACCES: permission denied, access '/opt/app-root/src/node_modules'
npm ERR! stack: 'Error: EACCES: permission denied, access \'/opt/app-root/src/node_modules\'',
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'access',
npm ERR! path: '/opt/app-root/src/node_modules' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
Ideas about this one?
I see it's already running as root user, so not sure what's happening:
+ echo -e 'Running as user uid=1000140000 gid=0(root) groups=0(root),1000140000'
--
| + '[' true == true ']'
| + echo 'Installing dev dependencies...'
| + npm install
Full log:
+ export GIT_COMMITTER_NAME=unknown
+ GIT_COMMITTER_NAME=unknown
+ export and GIT_COMMITTER_EMAIL=unknown@localhost.com
+ GIT_COMMITTER_EMAIL=unknown@localhost.com
+ git --version
git version 2.9.3
+ '[' '' == --debug ']'
+ run_node
+ echo -e 'Environment: \n\tDEV_MODE=true\n\tNODE_ENV=development\n\tDEBUG_PORT=5858'
Environment:
DEV_MODE=true
NODE_ENV=development
DEBUG_PORT=5858
++ id
+ echo -e 'Running as user uid=1000140000 gid=0(root) groups=0(root),1000140000'
+ '[' true == true ']'
+ echo 'Installing dev dependencies...'
+ npm install
Running as user uid=1000140000 gid=0(root) groups=0(root),1000140000
Installing dev dependencies...
npm info it worked if it ends with ok
npm info using npm@5.6.0
npm info using node@v10.1.0
npm info lifecycle launcher-frontend@0.0.7~preinstall: launcher-frontend@0.0.7
npm http fetch GET 200 https://registry.npmjs.org/rhoaster 170ms
npm http fetch GET 200 https://registry.npmjs.org/nodeshift 180ms
npm http fetch GET 200 https://registry.npmjs.org/openshift-config-loader 52ms
npm http fetch GET 200 https://registry.npmjs.org/openshift-rest-client 53ms
npm http fetch GET 200 https://registry.npmjs.org/yargs 38ms
npm http fetch GET 200 https://registry.npmjs.org/openshift-rest-client/-/openshift-rest-client-1.1.1.tgz 42ms
npm http fetch GET 200 https://registry.npmjs.org/openshift-config-loader 94ms
npm http fetch GET 200 https://registry.npmjs.org/git-repo-info 99ms
npm http fetch GET 200 https://registry.npmjs.org/cliui 50ms
npm http fetch GET 200 https://registry.npmjs.org/js-yaml 116ms
npm http fetch GET 200 https://registry.npmjs.org/find-up 52ms
npm http fetch GET 200 https://registry.npmjs.org/chalk 126ms
npm http fetch GET 200 https://registry.npmjs.org/os-locale 53ms
npm http fetch GET 200 https://registry.npmjs.org/string-width 55ms
npm http fetch GET 200 https://registry.npmjs.org/openshift-rest-client 159ms
npm http fetch GET 200 https://registry.npmjs.org/rimraf 159ms
npm http fetch GET 200 https://registry.npmjs.org/which-module 59ms
npm http fetch GET 200 https://registry.npmjs.org/tar 168ms
npm http fetch GET 200 https://registry.npmjs.org/yargs-parser 65ms
npm http fetch GET 200 https://registry.npmjs.org/strip-ansi 68ms
npm http fetch GET 200 https://registry.npmjs.org/esprima 67ms
npm http fetch GET 304 https://registry.npmjs.org/string-width 81ms (from cache)
npm http fetch GET 200 https://registry.npmjs.org/ansi-styles 56ms
npm http fetch GET 200 https://registry.npmjs.org/locate-path 64ms
npm http fetch GET 200 https://registry.npmjs.org/supports-color 55ms
npm http fetch GET 200 https://registry.npmjs.org/execa 52ms
npm http fetch GET 200 https://registry.npmjs.org/mem 64ms
npm http fetch GET 200 https://registry.npmjs.org/is-fullwidth-code-point 64ms
npm http fetch GET 200 https://registry.npmjs.org/fs-minipass 60ms
npm http fetch GET 200 https://registry.npmjs.org/chownr 66ms
npm http fetch GET 200 https://registry.npmjs.org/glob 74ms
npm http fetch GET 200 https://registry.npmjs.org/minipass 70ms
npm http fetch GET 200 https://registry.npmjs.org/safe-buffer 62ms
npm http fetch GET 200 https://registry.npmjs.org/minizlib 68ms
npm http fetch GET 200 https://registry.npmjs.org/yallist 56ms
npm http fetch GET 200 https://registry.npmjs.org/camelcase 49ms
npm http fetch GET 200 https://registry.npmjs.org/p-locate 47ms
npm http fetch GET 200 https://registry.npmjs.org/ansi-regex 55ms
npm http fetch GET 200 https://registry.npmjs.org/has-flag 41ms
npm http fetch GET 200 https://registry.npmjs.org/path-exists 44ms
npm http fetch GET 200 https://registry.npmjs.org/cross-spawn 46ms
npm http fetch GET 200 https://registry.npmjs.org/get-stream 46ms
npm http fetch GET 200 https://registry.npmjs.org/npm-run-path 45ms
npm http fetch GET 200 https://registry.npmjs.org/p-finally 44ms
npm http fetch GET 200 https://registry.npmjs.org/strip-eof 44ms
npm http fetch GET 200 https://registry.npmjs.org/mimic-fn 40ms
npm http fetch GET 200 https://registry.npmjs.org/p-limit 32ms
npm http fetch GET 200 https://registry.npmjs.org/shebang-command 23ms
npm http fetch GET 200 https://registry.npmjs.org/path-key 28ms
npm http fetch GET 200 https://registry.npmjs.org/p-try 22ms
npm http fetch GET 200 https://registry.npmjs.org/shebang-regex 21ms
npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but npm-shrinkwrap.json was generated for lockfileVersion@0. I'll try to do my best with it!
npm WARN read-shrinkwrap This version of npm is compatible with lockfileVersion@1, but npm-shrinkwrap.json was generated for lockfileVersion@0. I'll try to do my best with it!
npm WARN checkPermissions Missing write access to /opt/app-root/src/node_modules
npm WARN ngx-modal@0.0.29 requires a peer of @angular/core@^2.0.0 but none is installed. You must install peer dependencies yourself.
npm WARN ngx-modal@0.0.29 requires a peer of @angular/router@^3.0.0 but none is installed. You must install peer dependencies yourself.
npm ERR! path /opt/app-root/src/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/opt/app-root/src/node_modules'
npm ERR! { Error: EACCES: permission denied, access '/opt/app-root/src/node_modules'
npm ERR! stack: 'Error: EACCES: permission denied, access \'/opt/app-root/src/node_modules\'',
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'access',
npm ERR! path: '/opt/app-root/src/node_modules' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
┌───────────────────────────────────────────────────────────────┐
│ npm update check failed │
│ Try running with sudo or get access │
│ to the local update config store via │
│ sudo chown -R $USER:$(id -gn $USER) /opt/app-root/src/.config │
└───────────────────────────────────────────────────────────────┘
npm ERR! A complete log of this run can be found in:
npm ERR! /opt/app-root/src/.npm/_logs/2018-05-17T17_57_31_287Z-debug.log
@lincolnthree I have been traveling a bit and will be able to spend more time on this soon, but for now, I have a suspicion about something. If you were to remove all of the artifacts from this project (deployment configs, build configs, builds, image streams, routes and services), then redeploy, does the problem still occur?
Trying with a delete.
It worked! Thanks @lance . Interesting. Why is this the case?
Also, I hope your talk went well today :)
The view at that speaker's dinner looked.... stunning.
@lincolnthree I haven't looked at your project to see exactly what you are doing, but here is my theory.
When you deploy an application more than once, the assemble
script tries to be smart and will use the node_modules
directory from previous installs in order to save on deployment time https://github.com/bucharest-gold/centos7-s2i-nodejs/blob/master/s2i/assemble#L42-L49. I think this might be the problem. And in spite of the fact that you are in the root
group (look closely at that line, you're not root
- just in the group), the permissions from the previous install seem to be insufficient. I will poke around with it more today after my talk and see what I can find.
My first talk yesterday went really well - thanks for asking!
@lincolnthree since you had success after removing the previous build configuration and other artifacts, does the problem still occur when you try to rebuild?
Checking...
It fails with the same error. Interesting.
@lincolnthree I took a look at your package.json and I have to say... that's a complicated build! Can you help me out by explaining how your build works - or even providing a simpler sample project where I can easily reproduce the error within a test case?
@lance Yeah I'm simplifying it now. I forked from another project (Fabric8 launcher-frontend). I've been trying to cut out the stuff that's not necessary.
Basically just:
npm install
npm run build:prod
npm run start:prod
"build:prod": "webpack --config config/webpack.prod.js -p",
"start:prod": "node scripts/prod-server.js",
That's all that should be necessary.
@lance I'm having some other strange issues now. E.g. the image no longer seems to respect my .s2i/environment file. It's running some other commands and I don't really know what or why.
E.g. It seems to run npm install again in the deployment of the final image. Even after it's already done that during the image build. And it's not calling my NPM_RUN=
(I know because I deleted the run script it references and it's still doing the same thing and not complaining.)
@lance The s2I image build step just seems to run the npm install and then postinstall scripts. Nothing else.
The strange part with that is I could swear it had been respecting this configuration before.
Ah. Apparently after reading through the S2I scripts, NPM_RUN is only respected in "production" NODE_ENV... seems like it should be respected in "development" as well?
@lincolnthree yeah, so in dev mode we run nodemon
which looks at the main
property in package.json. Can you try adding a main: scripts/prod_server.js
line in your package.json to see if that helps?
@lincolnthree how are things with this?
So far so good. I figured out how to use the BuildConfig env:
vars to control the node env for build vs. deploy. That seems to be the most reasonable solution. That said, I think there does need to be a way to configure nodemon
to target a script in the package.json, not main. As main.js is often used for specifying actual code entry points, not build entry points, right?
I think the conflation of building vs. deploying/releasing should be avoided, as that's already confusing as hell in node-land.
Thoughts?
Closing as resolved, and opening a new issue regarding documentation - referencing #94
@lincolnthree I have been traveling a bit and will be able to spend more time on this soon, but for now, I have a suspicion about something. If you were to remove all of the artifacts from this project (deployment configs, build configs, builds, image streams, routes and services), then redeploy, does the problem still occur?
saw this issue and had the same problem (include first step that worked for both of us) but the:
EACCES: permission denied, access '/opt/app-root/src/node_modules' npm openshift
still occures to me, even when I delete it all..
any ideas?
@lance
Im using openshift with node.js 10
if my NODE_EVN is production than I get this:
| │ npm update check failed │
| │ Try running with sudo or get access │
| │ to the local update config store via │
| │ sudo chown -R
else, if my NODE_ENV defined as development than I get that:
npm ERR! path /opt/app-root/src/node_modules
npm ERR! code EACCES
npm ERR! errno -13
npm ERR! syscall access
npm ERR! Error: EACCES: permission denied, access '/opt/app-root/src/node_modules'
npm ERR! { Error: EACCES: permission denied, access '/opt/app-root/src/node_modules'
npm ERR! stack: 'Error: EACCES: permission denied, access '/opt/app-root/src/node_modules'',
npm ERR! errno: -13,
npm ERR! code: 'EACCES',
npm ERR! syscall: 'access',
npm ERR! path: '/opt/app-root/src/node_modules' }
npm ERR!
npm ERR! Please try running this command again as root/Administrator.
I played a lot with the pods, builds and etc.. didnt work
https://github.com/NatalyShv/Roomates
this is my POC repo that I try to launch on openshift @lance
the same error as @OfekRv has