From 5d292fa6f158b9f107620a3ca044149cd01c0f13 Mon Sep 17 00:00:00 2001 From: Thibaut SABOT <9283289+thibautsabot@users.noreply.github.com> Date: Sun, 5 Dec 2021 15:41:10 +0100 Subject: [PATCH] Fix no-server-import-in-page eslint rule for subfolder middleware (#32139) People have been reporting on https://github.com/vercel/next.js/pull/30973 that the `no-server-import-in-page` eslint rule is reporting false positives for `_middleware` files inside sub-page folders. Unlike `_document`, we can have multiple `_middleware` files. Fixes #32121 --- .../lib/rules/no-server-import-in-page.js | 4 ++-- .../eslint-plugin-next/no-server-import-in-page.test.ts | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/eslint-plugin-next/lib/rules/no-server-import-in-page.js b/packages/eslint-plugin-next/lib/rules/no-server-import-in-page.js index da3f59eeec134..4bc873952246e 100644 --- a/packages/eslint-plugin-next/lib/rules/no-server-import-in-page.js +++ b/packages/eslint-plugin-next/lib/rules/no-server-import-in-page.js @@ -21,8 +21,8 @@ module.exports = { if ( !page || - page.startsWith(`${path.sep}_middleware`) || - page.startsWith(`${path.posix.sep}_middleware`) + page.includes(`${path.sep}_middleware`) || + page.includes(`${path.posix.sep}_middleware`) ) { return } diff --git a/test/unit/eslint-plugin-next/no-server-import-in-page.test.ts b/test/unit/eslint-plugin-next/no-server-import-in-page.test.ts index 0945da3850848..156aabd09fbe4 100644 --- a/test/unit/eslint-plugin-next/no-server-import-in-page.test.ts +++ b/test/unit/eslint-plugin-next/no-server-import-in-page.test.ts @@ -78,6 +78,15 @@ ruleTester.run('no-server-import-in-page', rule, { `, filename: 'pagesapp/src/pages/_middleware.js', }, + { + code: `import { NextFetchEvent, NextRequest } from "next/server" + + export function middleware(req, ev) { + return new Response('Hello, world!') + } + `, + filename: 'src/pages/subFolder/_middleware.js', + }, ], invalid: [ {