next.js: operation not permitted

Verify canary release

  • I verified that the issue exists in the latest Next.js canary release

Provide environment information

Operating System:
  Platform: win32
  Arch: x64
  Version: Windows 10 Pro
Binaries:
  Node: 16.15.0
  npm: N/A
  Yarn: N/A
  pnpm: N/A
Relevant packages:
  next: 12.3.2-canary.0
  eslint-config-next: 12.3.1
  react: 18.2.0
  react-dom: 18.2.0

What browser are you using? (if relevant)

No response

How are you deploying your application? (if relevant)

No response

Describe the Bug

When I run the build I have this error

> Build error occurred
[Error: EPERM: operation not permitted, scandir 'C:\Users\axell\Documents\Development\pikas-template\apps\app\.next\standalone\apps\app\node_modules\next'] {
  errno: -4048,
  code: 'EPERM',
  syscall: 'scandir',
  path: 'C:\\Users\\axell\\Documents\\Development\\pikas-template\\apps\\app\\.next\\standalone\\apps\\app\\node_modules\\next'
}

And in my next.config.js I have this

require('dotenv-flow').config({ path: '../..' });

const withPWA = require('next-pwa');
const withPlugins = require('next-compose-plugins');
const withBundleAnalyzer = require('@next/bundle-analyzer')({
  enabled: process.env.ANALYZE === 'true',
});
const { join } = require('path');
const withTM = require('next-transpile-modules')([]);

const plugins = [withTM, withBundleAnalyzer, withPWA];

/**
 * @type {import('next').NextConfig}
 */
const nextConfig = {
  swcMinify: true,
  reactStrictMode: true,
  output: 'standalone',
  experimental: {
    outputFileTracingRoot: join(__dirname, '../../'),
  },
  i18n: {
    locales: ['en', 'fr'],
    defaultLocale: 'en',
  },
  pwa: {
    disable: process.env.NODE_ENV === 'development',
    dest: 'public',
  },
};

module.exports = withPlugins(plugins, nextConfig);

I found these issues that talk about it too: #36645 #1537

Expected Behavior

I just want to build my app

Link to reproduction

https://github.com/Achaak/pikas-template

To Reproduce

Use this command

pnpm i

pnpm generate

pnpm build:packages

cd apps/app

pnpm build  <-- The bug appears here

About this issue

  • Original URL
  • State: open
  • Created 2 years ago
  • Reactions: 16
  • Comments: 17 (2 by maintainers)

Most upvoted comments

I encounter the same issue with this setup:

  • Windows 10.0.19044
  • Node 18.13.0 (or 16)
  • pnpm 7.25.1
  • next 12.3.4

We use standalone output in combination with outputFileTracingRoot for monorepo usage.

If I run pnpm build with normal privileges I get a scandir error: errno: -4048, code: 'EPERM', syscall: 'scandir', Same command with admin privileges gives me the mkdir error: errno: -4048, code: 'EPERM', syscall: 'mkdir',

Unfortunately, I cannot reproduce the issue myself, but it looks related to the output: "standalone" or outputFileTracingRoot settings.

To investigate further, here are some things we could try:

  • Build with and without output: "standalone".

  • Check if it builds when outputFileTracingRoot is not utilized

  • Check a different package manager. yarn or npm, to see if the issue is pnpm-specific or not.

  • It would also be nice to see if we can pinpoint exactly which version of next this bug was introduced in. (A good candidate to start bisecting is v12.1.7-canary.48, when output: "standalone" was stabilized. If the issue reproduces still, the bug might have always existed.)

  • output: standalone is enough to break it, without it it works
  • other package managers: npm works, yarn works
  • next 12.1.7-canary.48 produces the same error, so I think it’s always been there

This is my minimal reproduction example, it’s basically just 3 steps (powershell):

# Make dir if not exists
mkdir -Force "./next-40760-repro"
# cd to it
pushd "./next-40760-repro"
# delete any content from previous run
rm * -Recurse -Force 

# create-next-app with pnpm
pnpm create next-app --ts --use-pnpm .

# add output: 'standalone' to next.config.js
[regex]$pattern = ",\s+}"
$pattern.Replace((cat "next.config.js"), ",output: 'standalone',};", 1) | Set-Content "next.config.js"

# build
pnpm next build

popd

In my case, this issue occurs on output: "standalone". https://github.com/vercel/next.js/blob/4125069840ca98981f0e7796f55265af04f3e903/packages/next/src/build/utils.ts#L1957 It seems like fs.symlink is not supported ideally at Windows (at least at mine).

I fixed it by enabling Windows Developer Mode

I have the same problem with the following setup:

  • Windows 11 Pro 22H2
  • Node 18.12.1
  • pnpm 8.5.1
  • next 13.4.2
[Error: EPERM: operation not permitted, scandir '...\.next\standalone\node_modules\axios'] {
  type: 'Error',
  errno: -4048,
  code: 'EPERM',
  syscall: 'scandir',
  path: '...\\.next\\standalone\\node_modules\\axios'
}

For now, deleting .next folder for almost every build is the solution.

I can confirm this exact problem with Windows + pnpm. .next/standalone/node_modules includes dependencies in the .pnpm folder instead of the root node_modules folder, leading to Error: EPERM: operation not permitted, stat 'C:\GitHub\project\.next\standalone\node_modules\next'

It works fine with npm as dependencies are in root node_modules

Unsure if this stackoverflow issue is related, then it would mean this is an old issue https://stackoverflow.com/questions/70895922/pnpm-linking-with-standalone-nextjs-build

After several tests with colleagues, the problem would be on windows.

And yes when I remove output: "standalone" ans outputFileTracingRoot its work but I need it

Same error for me.

I have just tried it in Linux and it works perfectly. So is Windows + pnpm specific. Turbotrace on Windows does not fix the issue either. And building the standalone folder on Linux, which works, and moving it to Windows and running it still causes the error.