【问题标题】:Uncaught SyntaxError: The requested module does not provide an export named 'fs'未捕获的语法错误:请求的模块未提供名为“fs”的导出
【发布时间】:2021-12-27 02:20:44
【问题描述】:

我不擅长 javascript。我正在尝试通过修改此示例将一些文件作为文件夹上传到 nft.storage -> https://github.com/nftstorage/nft.storage/blob/main/packages/client/examples/node.js/storeDirectory.js

我的文件不是通过表单上传,而是存储在我的 PC 文件系统中。下面是我的js代码。

<script type="module">
  import { NFTStorage, File } from 'https://cdn.skypack.dev/nft.storage'
  import { fs } from 'https://cdn.skypack.dev/fs-'

  const endpoint = 'https://api.nft.storage' // the default
  const token = 'RDA0NjI0MTIzMTA2Mzgy....' // your API key from https://nft.storage/manage

  function log(msg) {
    msg = JSON.stringify(msg, null, 2)
    document.getElementById('out').innerHTML += `${msg}\n`
  }

  document.querySelector('#upload-file-ipfs').addEventListener('click', async (e) => {
    e.preventDefault()
    
    const storage = new NFTStorage({ endpoint, token })
    const cid = await storage.storeDirectory([
        new File([await fs.promises.readFile('metadata.json')], 'metadata.json'),
        new File([await fs.promises.readFile('test.png')], 'test.png'),
    ])
    console.log({ cid })
    const status = await storage.status(cid)
    console.log(status)
  })
</script>

但我在下面不断收到此错误。

Uncaught SyntaxError: The requested module 'https://cdn.skypack.dev/fs-' does not provide an export named 'fs'

我尝试用“https://www.skypack.dev/view/fs-extra”和“https://cdn.skypack.dev”替换“https://cdn.skypack.dev/fs-” /graceful-fs' 它给了我同样的错误。

如果我删除“fs”周围的花括号,我会得到Uncaught Error: [Package Error] "fs" does not exist. (Imported by "fs-").

非常感谢任何帮助。我的应用程序是 PHP+ JS,而不是 node.js。

【问题讨论】:

  • @CherryDT 谢谢。好吧,我根本不擅长 js,而且我的应用程序不是基于 node,js,它是 PHP + JS。那么有没有办法让我在浏览器上使用 fs 运行相同的代码?
  • 请仅使用与当前问题相关的标签来标记您的问题。由于此处不涉及 PHP,因此您应该删除该标签。 node.js 也是如此,因为您明确表示您的应用不是 node.js 应用。

标签: javascript node.js ipfs skypack-cdn


【解决方案1】:

它应该没有花括号,如docs for fs- 所示,但第二个错误告诉您下一个问题:您正在尝试在浏览器中使用为 node.js 设计的包。 (浏览器没有本机 fs 模块。)在后端 node.js 应用程序中使用它,而不是前端。

由于您似乎试图在 浏览器 中使用它,因此您可能不应该使用您链接的 node.js 示例(nft.storage/packages /client/examples/node.js/storeDirectory.js),而是浏览器示例https://github.com/nftstorage/nft.storage/blob/main/packages/client/examples/browser

但是请记住,浏览器中的脚本不能只从用户的文件系统中读取随机文件。用户必须以表单的形式上传文件(或使用浏览器文件系统 API 授予对某个目录的访问权限,但这是实验性的)。

【讨论】:

  • 好的。所以也许我应该使用 FormData?由于我的文件我需要我的代码来自动读取文件,而不是让用户将文件上传到表单。
猜你喜欢
  • 2022-01-06
  • 2021-12-23
  • 1970-01-01
  • 2020-10-13
  • 2023-01-27
  • 2022-01-13
  • 2022-08-10
  • 2022-06-19
  • 2022-01-18
相关资源
最近更新 更多