而是将 index.js 的要求更改为在所有 CommonJS 模块中可用的动态 import()

新手上路,请多包涵

尝试使用 node/javascript/nfts,我是一个菜鸟,按照教程进行操作,但出现此错误:

 error [ERR_REQUIRE_ESM]: require() of ES Module [...] is not supported. Instead change the require of index.js [ in my file...]  to a dynamic import() which is available in all CommonJS modules

我的理解是他们已经更新了节点文件,所以我需要与教程中的代码不同的代码,但我不知道我应该更改哪个代码、更改位置和内容。请尽可能具体

const FormData = require('form-data');
const fetch = require('node-fetch');
const path = require("path")
const basePath = process.cwd();
const fs = require("fs");

fs.readdirSync(`${basePath}/build/images`).foreach(file).forEach(file => {
    const formData = new FormData();
    const fileStream = fs.createReadStream(`${basePath}/build/images/${file}`);
    formData.append('file',fileStream);

    let url = 'https://api.nftport.xyz/v0/files';

    let options = {
      method: 'POST',
      headers: {
        Authorization: '[...]',
      },
      body: formData
    };

    fetch(url, options)
      .then(res => res.json())
      .then(json => {
       const fileName = path.parse(json.file_name).name;
       let rawdata = fs.readFileSync(`${basePath}/build/json/${fileName}.json`);
       let metaData = JSON.parse(rawdata);

       metaData.file_url = json.ipfs_url;

       fs.writeFileSync(`${basePath}/build/json${fileName}.json`, JSON.stringify(metaData, null, 2));

       console.log(`${json.file_name} uploaded & ${fileName}.json updated!`);
      })
      .catch(err => console.error('error:' + err));
})

原文由 Basse Nord 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 2.7k
2 个回答

这是因为 node-fetch 包。由于此软件包的最新版本仅支持 ESM,因此您必须将其降级到旧版本 node-fetch@2.6.1 或更低版本。

npm i node-fetch@2.6.1

这应该可以解决问题。

原文由 ABDULLOKH MUKHAMMADJONOV 发布,翻译遵循 CC BY-SA 4.0 许可协议

转到您的 package.json 文件并写入

"type": "module",

以上调试。

而不是写 require('chalk') 在 js 文件中将其更改为 import chalk from 'chalk'

原文由 Mona Thahmeen 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题