No soy bueno con javascript. Estoy tratando de cargar algunos archivos en nft.storage como carpeta modificando este ejemplo -> https://github.com/nftstorage/nft.storage/blob/main/packages/client/examples/node.js/ storeDirectory.js
En lugar de cargarlos a través de un formulario, mis archivos se almacenan en el sistema de archivos de mi PC. A continuación se muestra mi código 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>Pero sigo recibiendo este error a continuación.
Uncaught SyntaxError: The requested module 'https://cdn.skypack.dev/fs-' does not provide an export named 'fs'
Intenté reemplazar 'https://cdn.skypack.dev/fs-' con 'https://www.skypack.dev/view/fs-extra' y ''https://cdn.skypack.dev/graceful- fs' y me da el mismo error.
Si elimino las llaves alrededor de 'fs', obtengo un Uncaught Error: [Package Error] "fs" does not exist. (Imported by "fs-").
Cualquier ayuda es muy apreciada. Mi aplicación es PHP+ JS, no node.js.
Debería estar sin llaves, como se muestra en los documentos para fs- , pero el segundo error le indica el siguiente problema: está tratando de usar un paquete en el navegador que está diseñado para node.js. (Los navegadores no tienen un módulo fs nativo). Úselo en su aplicación backend node.js, no en la interfaz.
Dado que parece estar tratando de usar esto en un navegador , probablemente no debería usar el ejemplo de node.js que vinculó ( nft.storage/packages/client/examples/node.js /storeDirectory.js) sino el navegador ejemplo : https://github.com/nftstorage/nft.storage/blob/main/packages/client/examples/browser
Sin embargo, recuerde que una secuencia de comandos en un navegador no puede simplemente leer archivos aleatorios del sistema de archivos del usuario. El usuario tiene que cargar el archivo en un formulario (o dar acceso a un directorio determinado usando las API del sistema de archivos del navegador, pero eso es experimental).