Search code examples
javascriptnode.jsnpmnext.jspnpm

npm/pnpm run dev showing permission issue


This issue doesn't come when I run the same command with sudo, as expected. What am I missing here? I've checked for similar posts here, and generally. The same goes for npm run dev. Both npm and pnpm have the same issue. node_modules was installed without any root permissions. No issues with sudo npm run dev/sudo pnpm run dev

someuser@someuser-normalUbuntu:~/projects/nextjs-dashboard$ pnpm run dev

> [email protected] dev /home/someuser/projects/nextjs-dashboard
> next dev

   ▲ Next.js 14.0.4
   - Local:        http://localhost:3000
   - Environments: .env.development

Error: EACCES: permission denied, unlink '/home/someuser/projects/nextjs-dashboard/.next/app-build-manifest.json'
    at async Object.unlink (node:internal/fs/promises:1059:10)
    at async unlinkPath (/home/someuser/projects/nextjs-dashboard/node_modules/.pnpm/[email protected][email protected][email protected][email protected]/node_modules/next/dist/lib/recursive-delete.js:25:13)
    at async Promise.all (index 0)
    at async recursiveDelete (/home/someuser/projects/nextjs-dashboard/node_modules/.pnpm/[email protected][email protected][email protected][email protected]/node_modules/next/dist/lib/recursive-delete.js:51:5)
    at async Span.traceAsyncFn (/home/someuser/projects/nextjs-dashboard/node_modules/.pnpm/[email protected][email protected][email protected][email protected]/node_modules/next/dist/trace/trace.js:147:20)
    at async HotReloader.start (/home/someuser/projects/nextjs-dashboard/node_modules/.pnpm/[email protected][email protected][email protected][email protected]/node_modules/next/dist/server/dev/hot-reloader-webpack.js:587:9)
    at async startWatcher (/home/someuser/projects/nextjs-dashboard/node_modules/.pnpm/[email protected][email protected][email protected][email protected]/node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.js:1197:5)
    at async setupDevBundler (/home/someuser/projects/nextjs-dashboard/node_modules/.pnpm/[email protected][email protected][email protected][email protected]/node_modules/next/dist/server/lib/router-utils/setup-dev-bundler.js:1812:20)
    at async Span.traceAsyncFn (/home/someuser/projects/nextjs-dashboard/node_modules/.pnpm/[email protected][email protected][email protected][email protected]/node_modules/next/dist/trace/trace.js:147:20)
    at async initialize (/home/someuser/projects/nextjs-dashboard/node_modules/.pnpm/[email protected][email protected][email protected][email protected]/node_modules/next/dist/server/lib/router-server.js:72:30) {
  errno: -13,
  code: 'EACCES',
  syscall: 'unlink',
  path: '/home/someuser/projects/nextjs-dashboard/.next/app-build-manifest.json'
}

I use Ubuntu 22.04.

someuser@someuser-normalUbuntu:~$ node -v
v21.6.2
someuser@someuser-normalUbuntu:~$ npm -v
10.2.4
someuser@someuser-normalUbuntu:~$ pnpm -v
8.15.3

It works when I do

sudo chown -R ${USER} folder_name

But that doesn't solve the larger issue


Solution

  • The issue is with the permission your project(nextjs-dashboard) directory has which is not allowing you to execute and install dependencies and peer dependencies. To resolve it so that your particular directory has proper permissions:

    1. Change the ownership of your project directory recursively, so your user has full control over it which you've already tried.
      sudo chown -R ${USER} /home/someuser/projects/nextjs-dashboard
    2. Set the proper permissions for your project directory which is required.
      sudo chmod -R 755 /home/someuser/projects/nextjs-dashboard