reactjs - Next.js + eslint : unable to resolve path to module 'fs/promises'

标签 reactjs next.js eslint eslintrc

我启动了一个 Next.js 应用程序并配置了 eslint。 我的开发依赖列表是:

"devDependencies": {
    "babel-eslint": "^10.1.0",
    "eslint": "^7.21.0",
    "eslint-config-airbnb": "^18.2.1",
    "eslint-config-prettier": "^8.1.0",
    "eslint-plugin-import": "^2.22.1",
    "eslint-plugin-jsx-a11y": "^6.4.1",
    "eslint-plugin-prettier": "^3.3.1",
    "eslint-plugin-react": "^7.22.0",
    "eslint-plugin-react-hooks": "^4.2.0"
}

我的 .eslintrc 文件是:

{
    "env": {
        "browser": true,
        "commonjs": true,
        "es6": true,
        "node": true
    },
    "parser": "babel-eslint",
    "extends": [
        "eslint:recommended",
        "airbnb",
        "airbnb/hooks",
        "plugin:react/recommended",
        "plugin:import/errors",
        "plugin:import/warnings",
        "plugin:jsx-a11y/recommended",
        "prettier"
    ],
    "globals": {
        "Atomics": "readonly",
        "SharedArrayBuffer": "readonly"
    },
    "parserOptions": {
        "ecmaFeatures": {
            "jsx": true
        },
        "ecmaVersion": 11,
        "sourceType": "module"
    },
    "settings": {
        "react": {
            "version": "detect"
        }
    },
    "plugins": [
        "react",
        "react-hooks"
    ],
    "rules": {
        "react/react-in-jsx-scope": "off",
        "react/jsx-filename-extension": [
            1,
            {
                "extensions": [
                    ".js",
                    ".jsx"
                ]
            }
        ],
        "react/display-name": 1,
        "react/jsx-props-no-spreading": "off",
        "react/prop-types": "off",
        "jsx-a11y/anchor-is-valid": "off"
    }
}

我的 Node 版本是最新的 15.11(如果重要的话,我在 MacOS 上)。

问题是我正在导入:

import fs from 'fs/promises';

然后 eslint 抛出

Unable to resolve path to module 'fs/promises'.

否则,脚本可以运行,但我不明白是什么触发了错误。

有人能帮忙吗?

MCVE

yarn add -D eslint babel-eslint eslint-config-airbnb eslint eslint-plugin-jsx-a11y eslint-plugin-import eslint-plugin-react eslint-plugin-react-hooks eslint-config-prettier eslint-plugin-prettier

.eslintrc 文件:(如上问题正文)

file-example.js:

import path from 'path';
import fs from 'fs/promises'; // <= this throws "Unable to resolve path to module 'fs/promises'.

function HomePage(props) {
  const { products } = props;
  return (
    <ul>
      {products.map((product) => (
        <li key={product.id}>{product.title}</li>
      ))}
    </ul>
  );
}

export async function getStaticProps() {
  const filePath = path.join(process.cwd(), 'data', 'dummy-backend.json');
  const jsonData = await fs.readFile(filePath);
  const data = JSON.parse(jsonData);

  return {
    props: {
      products: data.products,
    },
  };
}

export default HomePage;

最佳答案

虽然我没有使用 React,而是使用纯 typescript ,但我遇到了同样的问题。我通过像下面的示例一样配置来解决它,使用 eslint-import-resolver-typescript .

  settings: {
    'import/resolver': {
      typescript: {
        alwaysTryTypes: true
      },
    },
  }

alwaysTryTypes: true 让它工作,因为它让 eslint 尊重 node_modules/@types/*,其中包括 @types/node,其中包含 "fs/promises" 声明(在最新版本的情况下)。

关于reactjs - Next.js + eslint : unable to resolve path to module 'fs/promises' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66511951/

相关文章:

javascript - 如何将 ESLint no-unused-vars 用于代码块?

javascript - 在 react 中设置状态后如何等待

reactjs - 输入 NextJs 链接/路由

reactjs - eslint-config-airbnb 出现 ESLint "Module build failed"错误

reactjs - nextjs 中的 2 级嵌套路由

javascript 默认替换功能在 nextjs 中不起作用

javascript - 导出图像时出现 eslint 错误 - 首选默认导出

javascript - ReactJS为什么会出现这种状态变化不渲染的情况?我究竟做错了什么?

javascript - 如何在 React Native 中用两条语句编写 if 条件

javascript - 尝试将生成的 PDF 文件从 React Js 发送到 Django-Rest Post 请求时未提交文件