Next.js сбой сборки с использованием тега

#html #node.js #reactjs #npm #next.js

Вопрос:

Недавно я начал создавать сайты с Next.js, и я использовал сочетание Image и img для различных случаев использования.

Я знаю, что Image это встроено Next.js и является лучшим выбором, но есть сценарии, в которых я не знаю размер или соотношение загружаемых изображений, и, следовательно img , кажется, что это лучше подходит.

Во время моего недавнего проекта это первый случай, когда моя npm run build команда терпит неудачу с:

 1:7  Error: Do not use <img>. Use Image from 'next/image' instead. See https://nextjs.org/docs/messages/no-img-element.
 

Мой другой Next.js проекты не терпят неудачу таким образом, и используют то же next.config.js самое . Кто — нибудь знает, почему это происходит?

Ответ №1:

Это связано с новым Next.js релиз, который интегрировал ESLint со своим собственным набором правил для обеспечения соблюдения, которые <Image> всегда следует использовать. Ваши другие проекты не проваливаются, потому что, вероятно, вы не используете Next.js v11, или у них может быть своя собственная конфигурация ESLint, в которой вы не расширили next . Ссылка.: nextjs.org/docs/basic-features/eslint

Вы можете игнорировать линтинг во время сборки с помощью этого:

 // next.config.js

module.exports = {
  eslint: { ignoreDuringBuilds: true },
  // your other settings here ...
}
 

Если вы хотите специально отключить правило для файла или просто строки, сделайте это: (можно сделать в два клика, если использовать расширение ESLint в VSCode)

 {/* eslint-disable-next-line @next/next/no-img-element */}
<img ... //>

// for whole file, add this to top:

/* eslint-disable @next/next/no-img-element */

// for a section:

/* eslint-disable @next/next/no-img-element */
// your code here...
/* eslint-enable @next/next/no-img-element */
 

Вы также можете отключить это правило с помощью .eslintrc :

 {
  "extends": "next",
  "rules": {
    "@next/next/no-img-element": "off",
  }
}
 

Вы также можете игнорировать (все правила для) полного файла, используя eslintignore или ignorePatterns . Пожалуйста, обратитесь: eslint.org/docs/user-guide/configuring/ignoring-code

Комментарии:

1. Удивительно — это сработало, спасибо за этот ответ!