【问题标题】:Cannot find module 'fs/promises' even when I use the fs code only inside "getStaticProps()" - next js即使我仅在“getStaticProps()”中使用 fs 代码,也找不到模块“fs/promises”-下一个 js
【发布时间】:2021-12-02 13:42:48
【问题描述】:

所以,我使用最新版本的下一个 js ^11.1.2。根据文档,在 getStaticProps() 函数中使用服务器端(节点 js)代码很好,因为它从客户端构建中删除了“fs”导入。

但在我的情况下它不起作用。

下面的代码是我做的……

    import fs from "fs/promises";
    import path from "path";
    
    function HomePage(props) {
      return (
        <ul>
          {props.products.map((el) => (
            <li key={el.id}>{el.title}</li>
          ))}
        </ul>
      );
    }
    
    export async function getStaticProps() {
      try {
        let data = await fs.readFileSync(
          path.join(process.cwd(), "data", "dummy-backend.json")
        );
        console.log(data);
        data = JSON.parse(data);
        return {
          props: {
            products: data.products,
          },
        };
      } catch (err) {
        console.log(err);
        return {
          props: {
            products: [],
            error: "Error in fetching data",
          },
        };
      }
    }
    
    export default HomePage;

Picture of the error displayed in the terminal

我在开发环境中。

【问题讨论】:

  • 您使用的是哪个 Node.js 版本? fs/promises 在低于 14 的版本上不可用。
  • 我使用的是node js v12.16.2。

标签: javascript node.js next.js server-side-rendering development-environment


【解决方案1】:

我最喜欢的解决方案: 使用

import { promises as fs } from 'fs';

而不是

import fs from "fs/promises";

并将 fs.readFileSync 更改为 fs.readFile。

【讨论】:

  • 这对我有用。谢谢!
  • 不客气 :)
猜你喜欢
  • 2021-09-06
  • 2023-01-28
  • 2019-07-03
  • 1970-01-01
  • 2018-07-10
  • 1970-01-01
  • 2019-06-11
  • 2017-02-12
  • 2017-09-06
相关资源
最近更新 更多