Ошибка типа: fs.stat не является функцией (IPFS JS)

#javascript #node.js #ipfs #js-ipfs

Вопрос:

Я изучаю ipfs js на основе учебника, но пока я следую, у меня возникают проблемы с вводом узла main.js в терминале вот так:

 /Users/username/Documents/coding/ipfs-test/node_modules/lock-me/src/unix.js:9
    (cb) => fs.stat(name, (err, stats) => {
               ^

TypeError: fs.stat is not a function
    at waterfall (/Users/username/Documents/coding/ipfs-test/node_modules/lock-me/src/unix.js:9:16)
    at nextTask (/Users/username/Documents/coding/ipfs-test/node_modules/async/waterfall.js:16:14)
    at exports.default (/Users/username/Documents/coding/ipfs-test/node_modules/async/waterfall.js:26:5)
    at unixLock (/Users/username/Documents/coding/ipfs-test/node_modules/lock-me/src/unix.js:8:3)
    at lock (/Users/username/Documents/coding/ipfs-test/node_modules/lock-me/src/index.js:53:5)
    at Object.exports.lock (/Users/username/Documents/coding/ipfs-test/node_modules/ipfs-repo/src/lock.js:23:3)
    at IpfsRepo._openLock (/Users/username/Documents/coding/ipfs-test/node_modules/ipfs-repo/src/index.js:168:18)
    at waterfall (/Users/username/Documents/coding/ipfs-test/node_modules/ipfs-repo/src/index.js:96:20)
 

Это код, написанный на main.js:

 const IPFS = require('ipfs');
console.log("Imported IPFS");
const mynode = new IPFS();
console.log("Starting Server");

mynode.on('ready', async () => {
    console.log("Server Started");
    const version = await mynode.version();
    console.log(version.version);
});
 

Информация:
Я использую node js версии 8.13.0,
IPFS JS, который я использую, имеет версию 0.32.3,
С ОС macOS Bigsur 11.4

Есть ли решение этой проблемы? Спасибо ^^

Ответ №1:

Я не уверен, какому учебнику вы следуете, но вот минимальный пример запуска вашего кода с использованием js-ipfs 0.55.3:

 const IPFS = require('ipfs');
console.log("Imported IPFS");

async function run() {
    console.log("Starting Server");
    const mynode = await IPFS.create();

    console.log("Server Started");
    const version = await mynode.version();
    console.log(version.version);
}

run();
 

Комментарии:

1. Спасибо, что помогли мне, метод, который вы дали, действительно отлично работал, если он был запущен с последней версией node js с ipfs js версии 0.55.3. Однако для Node js версии 8.13.0 и IPFS JS версии 0.32.3 это не работает. Появляется такая ошибка: Imported IPFS Starting Server (node:25730) UnhandledPromiseRejectionWarning: TypeError: IPFS.create is not a function есть ли для этого решение?

2. @AdamFaturahman есть ли способ избежать использования такой старой версии js-ipfs? Трудно поддерживать гораздо более старые версии программного обеспечения (особенно до версии 1.0), я обычно рекомендую людям использовать последнюю версию js-ipfs везде, где это возможно. Пожалуйста, дайте мне знать, если это невозможно, и почему :).