diff --git a/packages/eslint-plugin-next/lib/rules/inline-script-id.js b/packages/eslint-plugin-next/lib/rules/inline-script-id.js
index 099b12de8edaede..20322f913c22d47 100644
--- a/packages/eslint-plugin-next/lib/rules/inline-script-id.js
+++ b/packages/eslint-plugin-next/lib/rules/inline-script-id.js
@@ -27,15 +27,22 @@ module.exports = {
return
}
- const attributes = node.openingElement.attributes
+ const attributeNames = new Set()
+ node.openingElement.attributes.forEach((attribute) => {
+ if (attribute.type === 'JSXAttribute') {
+ attributeNames.add(attribute.name.name)
+ } else if (attribute.type === 'JSXSpreadAttribute') {
+ attribute.argument.properties.forEach((property) => {
+ attributeNames.add(property.key.name)
+ })
+ }
+ })
if (
node.children.length > 0 ||
- attributes.some(
- (attribute) => attribute.name.name === 'dangerouslySetInnerHTML'
- )
+ attributeNames.has('dangerouslySetInnerHTML')
) {
- if (!attributes.some((attribute) => attribute.name.name === 'id')) {
+ if (!attributeNames.has('id')) {
context.report({
node,
message:
diff --git a/test/unit/eslint-plugin-next/inline-script-id.test.ts b/test/unit/eslint-plugin-next/inline-script-id.test.ts
index eb59af7744304c6..d584af36402ad75 100644
--- a/test/unit/eslint-plugin-next/inline-script-id.test.ts
+++ b/test/unit/eslint-plugin-next/inline-script-id.test.ts
@@ -76,6 +76,28 @@ ruleTester.run('inline-script-id', rule, {
)
}`,
},
+ {
+ code: `import Script from 'next/script';
+
+ export default function TestPage() {
+ return (
+
+ )
+ }`,
+ },
+ {
+ code: `import Script from 'next/script';
+
+ export default function TestPage() {
+ return (
+
+ )
+ }`,
+ },
],
invalid: [
{