cloud9_note

cloud9に限らないメモ

View on GitHub

Node.js

コールバック

function func01(args, (error, callback) => {
    if(error){
        callback(args)
    }
})

キャッシュクリア

npm cache clean --force
rm -rf ~/.npm

# yarnを使っている場合はこれも実行。
yarn cache clean --force
rm -rf ~/.yarn

rm -rf node_modules

参考

fetch

ブラウザ側では何もしなくても使えるがNode.jsではinstallする必要がある。

npm i node-fetch

# requireでインストールする場合はver2が必要。
npm install --save-dev node-fetch@2

実装例(GET)

const fetch = require('node-fetch');

async function requestGithubUser(githubLogin) {
    try {
        console.log(`User : ${githubLogin}`);
        const githubApiUrl = `https://api.github.com/users/${githubLogin}`;
        const response = await fetch(githubApiUrl);
        const userData = await response.json();
        console.log(userData);
    } catch (error) {
        console.error(error);
    }
}

requestGithubUser('SampleUser0001');

参考

テスト

index.js

const retry = async (someFunction, maxRetryCount) => {
    let currentCount = 0;
    let error = null;
    
    while (maxRetryCount >= currentCount) {
        try {
            return await someFunction();
        } catch (err) {
            error = err;
            currentCount++;
            console.log(`Count ${currentCount} failed: ${error.message}`);
            continue;
        }
    }
    
    throw new Error(`Failed after ${maxRetryCount} attempts: ${error.message}`);
}

module.exports = { retry };

index.test.js

const test = require('node:test');
const assert = require('node:assert');
const { retry } = require('./index');

test('Success test', async (t) => {
    assert.strictEqual(1, 1);
})

test('Success async retry.', async (t) => {
    const res = await retry(() => {
        return 123;
    }, 2);
    assert.strictEqual(res, 123);
});

コマンド

node --test *.test.js

起動引数を取る

const args = process.argv;

// 2から。0はnodeコマンド、1はファイル名。
let args_index = 2;

console.info(args[args_index++])
console.info(args[args_index++])