Arduino Daten an HTML-Seite?

Ich habe gerade ein Projekt, indem ich versuche Daten vom Arduino auf eine HTML-Seite zu übertragen. Dabei benutze ich node.js.

Jedoch bin ich noch relativ neu in dem Thema und kenne mich nicht so gut mit Servern und node aus.

Im Moment erhalte ich ständig die Fehlermeldung: Server is not a consructor (const io = new Server('COM3'))

Quelltext aus app.js:

var http = require("http");
var fs = require("fs");
var index = fs.readFileSync("index.html");


var SerialPort = require("serialport");
const parsers = SerialPort.parsers;


const parser = new parsers.Readline({
  delimiter: "\r\n",
});


var port = new SerialPort("COM3", {
  baudRate: 9600,
  dataBits: 8,
  parity: "none",
  stopBits: 1,
  flowControl: false,
});


port.pipe(parser);


var app = http.createServer(function (req, res) {
  res.writeHead(200, {"Content-Type": "text/html"});
  res.end(index);
});


const Server = require('socket.io');
const io = new Server('COM3');


io.on("connection", function (socket) {
  console.log("Node is listening to port");
});


parser.on("data", function (data) {
  console.log("Received data from port: " + data);
  io.emit("data", data);
});

app.listen(3000);

Quelltext aus index.html:

<!doctype html>
<html>
    <head>
        <title>Test</title>


        <script src="https://cdn.socket.io/4.7.5/socket.io.min.js"></script>


    </head>
    <body>


        <h1> Communicating between an arduino and a html website</h1>


        <div id='sample'></div>


        <script>
            
            var socket = io();
            socket.on('data',function(data){
                console.log(data);
                document.getElementById('sample').innerHTML = data;
            });
            
        </script>
        
    </body>
</html>
Computer, HTML, IT, JavaScript, Anwendungsentwicklung, Arduino, Code, Programmiersprache, Webentwicklung, node.js, Visual Studio Code
TypeError: Cannot read properties of undefined (reading 'checkHealth')?

Hallo, ich habe einen error der mir sagt das checkHealth undefined ist wenn ich über npm devDeploy ausführe. Dort soll eigentlich meine Datei deployCommands.ts ausgeführt werden er geht aber erst in meine main.ts rein und dort tritt der fehler auf. Wenn ich aber nur dev ausführe was die main aufrufen soll und den Bot startet kommt kein fehler.

DeployCommands.ts: https://pastebin.com/5YAUhLfb

main.ts: https://pastebin.com/nWjvk3UD

package.json: https://pastebin.com/qV7ThnVW

Git Repo: https://github.com/luka-lta/byteBuddy_bot

/home/luka-lta/projects/PhpStorm/byteBuddy_bot/main.ts:6
ApiUtil.checkHealth().then((healthy) => {
        ^
TypeError: Cannot read properties of undefined (reading 'checkHealth')
    at Object.<anonymous> (/home/luka-lta/projects/PhpStorm/byteBuddy_bot/main.ts:6:9)
    at Module._compile (node:internal/modules/cjs/loader:1378:14)
    at Module.m._compile (/home/luka-lta/.nvm/versions/node/v21.6.2/lib/node_modules/ts-node/src/index.ts:1618:23)
    at Module._extensions..js (node:internal/modules/cjs/loader:1437:10)
    at Object.require.extensions.<computed> [as .ts] (/home/luka-lta/.nvm/versions/node/v21.6.2/lib/node_modules/ts-node/src/index.ts:1621:12)
    at Module.load (node:internal/modules/cjs/loader:1212:32)
    at Function.Module._load (node:internal/modules/cjs/loader:1028:12)
    at Module.require (node:internal/modules/cjs/loader:1237:19)
    at require (node:internal/modules/helpers:176:18)
    at Object.<anonymous> (/home/luka-lta/projects/PhpStorm/byteBuddy_bot/src/value/ByteBuddyChannel.ts:2:1)
Programmiersprache, node.js, TypeScript
Wie kann ich den Fehler beheben?
const http = require('http');
const fs = require('fs');
const mysql = require("mysql2");

var db  = mysql.createConnection({
    host : "localhost",
    user : "root",
    password : "passwort",
    database : "test-datenbank"
});


db.connect(function (error){
    if (error) throw error;
    console.log("Connected!")
    var sql = "INSERT INTO benutzer (username) VALUES ('Beispiel')";
    db.query(sql, function (error,result){
        if(error) throw error;
        console.log("1 record inserted");
    });
    sql="SELECT * FROM benutzer"
    
    db.query(sql,function(error,result){
        if (error) throw error;
        console.log(result);

    });
});

const server = http.createServer((req,res) => {
    const url = req.url;
    const method = req.method;
    

    if ( url === "/"){
    res.setHeader("key","value");
    res.setHeader("Content-Type","text/html");
    res.write('</html><body>');
    res.write('<h1>Main</h1>');
    res.write('<h1><form action="/register" method="post"> <input type="text" name="Username"><br><button type="submit">Click</button></form></h1>');
    res.write("</body></html>");
    res.end()
    return;
    }

    if (url === "/register"){
         
        const reqBody = []
         req.on('data', (chunk)=>{
            console.log(chunk);
            reqBody.push(chunk);
     });
        
     req.on('end', () => {
        console.log(reqBody);
        const parsed = Buffer.concat(reqBody).toString();
        console.log(parsed);
        const user = parsed.split('=')[1];
        console.log(user)
        
        // funktioniert nicht 
        sql = 'INSERT INTO benutzer (username) VALUES ?, user;
        db.query(sql,function(error,result){
            if (error) throw error;
            console.log(result);
        });



});
        
        
        res.setHeader("key","value");
        res.setHeader("Content-Type","text/html");
        res.write('</html>');
        res.write('<body><h1>Registriert</h1></body>');
        res.write("</html>");
        res.end()
        return;

    }
    
}) 



server.listen(1337);

Der Fehler lautet wie folgt:

code: 'ER_PARSE_ERROR',

 errno: 1064,

 sqlState: '42000',

 sqlMessage: "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1",

 sql: 'INSERT INTO benutzer (username) VALUES',

 fatal: true

SQL, Webentwicklung, node.js
Code zentralisieren?

Kann mir jemand helfen meinen Code zu zentralisieren? Ich möchte die DB connection aus dem code raus gezogen wird danke.

const fs = require('node:fs');
const path = require('node:path');
const { Client, Collection, Events, GatewayIntentBits } = require('discord.js');
const { token } = require('./config.json');
const { Sequelize } = require('sequelize');
const client = new Client({ intents: [GatewayIntentBits.Guilds] });
const sequelize = new Sequelize({
dialect: 'sqlite',
storage: ''
});
client.commands = new Collection();
const foldersPath = path.join(__dirname, 'commands');
const commandFolders = fs.readdirSync(foldersPath);
for (const folder of commandFolders) {
const commandsPath = path.join(foldersPath, folder);
const commandFiles = fs.readdirSync(commandsPath).filter(file => file.endsWith('.js'));
for (const file of commandFiles) {
const filePath = path.join(commandsPath, file);
const command = require(filePath);
if ('data' in command && 'execute' in command) {
client.commands.set(command.data.name, command);
} else {
console.log(`[WARNING] The command at ${filePath} is missing a required "data" or "execute" property.`);
}
}
}
const eventsPath = path.join(__dirname, 'events');
const eventFiles = fs.readdirSync(eventsPath).filter(file => file.endsWith('.js'));
for (const file of eventFiles) {
const filePath = path.join(eventsPath, file);
const event = require(filePath);
if (event.once) {
client.once(event.name, (...args) => event.execute(...args));
} else {
client.on(event.name, (...args) => event.execute(...args));
}
}
(async () => {
try {
await sequelize.authenticate();
console.log('The connection to the database has been successfully established.');
} catch (error) {
console.error('The connection to the database has failed:', error);
} finally {
sequelize.close();
}
})();
client.login(token);
JavaScript, Code, Programmiersprache, Environment, node.js, Discord, Discord Bot
Nodejs mariadb Column count doesn't match value count at row 1?

meine datenbank hat 4 spalten aber ich setze nur 3 ein weil die letzte eine auto_increment spalte ist,

ich nutze nodejs mit mariadb und habe folgende fehlermeldung beim daten einsetzen:

/home/j44/Downloads/themer/tut/node_modules/mariadb/lib/misc/errors.js:64
  return new SqlError(msg, sql, fatal, info, sqlState, errno, additionalStack, addHeader);
         ^

SqlError: (conn=2420, no: 1136, SQLState: 21S01) Column count doesn't match value count at row 1
sql: INSERT INTO thread value (no, head, ts) - parameters:['1171187570193989762','rrrrrrrrrrrrrrrr',1699303276347]
    at module.exports.createError (/home/j44/Downloads/themer/tut/node_modules/mariadb/lib/misc/errors.js:64:10)
    at PacketNodeEncoded.readError (/home/j44/Downloads/themer/tut/node_modules/mariadb/lib/io/packet.js:582:19)
    at Query.readResponsePacket (/home/j44/Downloads/themer/tut/node_modules/mariadb/lib/cmd/parser.js:58:28)
    at PacketInputStream.receivePacketBasic (/home/j44/Downloads/themer/tut/node_modules/mariadb/lib/io/packet-input-stream.js:85:9)
    at PacketInputStream.onData (/home/j44/Downloads/themer/tut/node_modules/mariadb/lib/io/packet-input-stream.js:135:20)
    at Socket.emit (node:events:514:28)
    at addChunk (node:internal/streams/readable:376:12)
    at readableAddChunk (node:internal/streams/readable:349:9)
    at Readable.push (node:internal/streams/readable:286:10)
    at TCP.onStreamRead (node:internal/stream_base_commons:190:23) {
  sqlMessage: "Column count doesn't match value count at row 1",
  sql: "INSERT INTO thread value (no, head, ts) - parameters:['1171187570193989762','rrrrrrrrrrrrrrrr',1699303276347]",
  fatal: false,
  errno: 1136,
  sqlState: '21S01',
  code: 'ER_WRONG_VALUE_COUNT_ON_ROW'
}


SQL, programmieren, JavaScript, Datenbank, MySQL, node.js, Discord, Discord Bot
Wieso funktioniert meine "Browser Extension" nicht auf dieser Seite?

Mir ist unter Linux aufgefallen das ich gar nicht den Auto-Scroll von Windows habe in zb. Google Chrome wenn man auf das Mauspad klickt, nutze ich gerne und dachte mir als Challenge ohne Chat Gpt dass ich mal schnell probieren könnte ein eigenes zu programmieren.

Ich weiß da gibt es fertige Software und Extension's, die laufen ohne Probleme und Ressourcen sparender wahrscheinlich.

Hab das erst in einer Html Datei (Extension in "") gemacht zum testen dann in anderen Websites den JS Code in eine Konsole eingefügt und es funktioniert eigentlich ganz gut.

Das Problem ist das ich nicht verstehe wieso er nicht hier funktioniert https://www.tennon.io/ , mir fällt beim inspizieren nichts auf und es scheint mit Next JS umgesetzt zu sein.

<!DOCTYPE html>
<html lang="de">


<head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Auto Scroll Extension</title>
    <style>
        html {
            min-width: 100%;
        }
    </style>
</head>


<body>
    <script>
        /* Render Dummy Content, cursor change wont work with min-height */
        for (let i = 0; i < 1000; i++) {
            document.body.innerHTML += "Lorem Ipsum ";
        }
        const scrollSpeed_Up = -1;
        const scrollSpeed_Down = 1;
        const middlehalf = window.innerHeight / 2;
        let AutoScroll_Interval; /* Global acess */
        let isScrolling = false;
        let isScrollingUp = false; /* Default Scrolling Down, Prevent Errors */


        const ToggleScrolling = Enable => {
            if (Enable) {
                console.log("Auto Scroll Active");
                document.body.style.cursor = "all-scroll";
                AutoScroll_Interval = setInterval(AutoScroll, 1);
                isScrolling = true; /* Prevent Multiple Interval's */
            } else if (!Enable && isScrolling) {
                /* Stop Interval , Reset Cursor and Variables */
                console.log("Auto Scroll Stopped");
                document.body.style.cursor = "auto";
                clearInterval(AutoScroll_Interval);
                isScrolling = false;
            }
        }


        const AutoScroll = () => {
            /* Get Current Vertical Scroll Position : console.log(window.scrollY); */
            isScrollingUp ? window.scrollBy(0, scrollSpeed_Up) : window.scrollBy(0, scrollSpeed_Down);
        }


        window.addEventListener("mousemove", e => {
            e.clientY > middlehalf ? isScrollingUp = false : isScrollingUp = true;
        });


        /* Check if Scroll Button is Pressed */
        window.addEventListener("mousedown", e => {
            e.button === 1 && !isScrolling ? ToggleScrolling(true) : ToggleScrolling(false);
        });


        /* ############## IGNORE ##############
        Check if Client has reached Bottom
        const scrollableHeight = document.documentElement.scrollHeight - window.innerHeight;
        if (window.scrollY >= scrollableHeight) { 
            // Reached Bottom Code ... 
        } else {
            // Code ...
        }
        */
    </script>
</body>


</html>
Browser, Linux, HTML, IT, Webseite, JavaScript, Ubuntu, HTML5, Informatik, Programmiersprache, Webentwicklung, Frontend, React, node.js, React Native
WEBSTORM erkennt .send Funktion nicht?

Bei folgendem Code sind die Methoden .send und .awaitReaction unterstrichen.

"Unresolved function or method send()"

Ich habe discord.js und so schon installiert. Muss man da sonst noch etwas importieren, damit .send usw. funktionieren?

const { Client, MessageEmbed, Intents } = require('discord.js');
const client = new Client({ intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MESSAGES] });

const TOKEN = 'Mein Token';
const channelId = 'ChannelID'; // Die ID des Textkanals, in dem die Nachrichten erstellt werden sollen

const userGroup = []; // Die Liste der Benutzer, die aufgelistet werden sollen
const options = ['Option 1', 'Option 2', 'Option 3', 'Option 4', 'Option 5']; // Die Auswahlmöglichkeiten

let currentIndex = 0; // Aktueller Index der Benutzergruppe

client.on('ready', () => {
    console.log(`Eingeloggt als ${client.user.tag}`);
});

client.on('messageCreate', async (message) => {
    console.log("P - Start des Event-Handlers");
    if (message.author.bot) return;

    if (message.content.startsWith('!start')) {
        console.log("P - !start erkannt");
        if (currentIndex < userGroup.length) {
            const user = await client.users.fetch(userGroup[currentIndex]);

            // Erstelle eine Nachricht mit den Auswahlmöglichkeiten
            const embed = new MessageEmbed() // Hier MessageEmbed verwenden
                .setTitle('Wähle eine Option:')
                .setDescription(options.join('\n'));
            const sentMessage = message.guild.channels.cache.get(channelId);
            await sentMessage.send(embed);
            console.log("P - Nachricht gesendet");
            // Füge Reaktionen hinzu
            for (let i = 0; i < options.length; i++) {
                await sentMessage.react(String(i + 1) + '\u20E3'); // Emoji-Reaktionen (1️⃣, 2️⃣, usw.)
            }

            // Warte auf eine Reaktion des aktuellen Benutzers
            const filter = (reaction, user) => user.id === userGroup[currentIndex];
            const collected = await sentMessage.awaitReactions(filter, { max: 1, time: 60000 }); // 60 Sekunden Zeit zum Reagieren

            if (collected.size === 0) {
                message.guild.channels.cache.get(channelId).send(`${user.tag} hat keine Option ausgewählt.`);
            } else {
                const chosenOption = options[parseInt(collected.first().emoji.name) - 1];

                message.guild.channels.cache.get(channelId).send(`${user.tag} hat "${chosenOption}" ausgewählt.`);
                // Hier kannst du die gewünschte Aktion ausführen, basierend auf der ausgewählten Option
            }

            // Lösche die ursprüngliche Nachricht und die Auswahl-Nachricht
            await message.delete();
            sentMessage.delete();

            currentIndex++; // Zum nächsten Benutzer in der Gruppe wechseln
        } else {
            message.channel.send('Alle Benutzer aus der Gruppe wurden aufgelistet.');
        }
    }
});
console.log('Bot starting');

client.login(TOKEN);
JavaScript, Code, node.js, Discord, Discord Bot, Discord.js
Discord JS Bot Button Geht nicht?

Meine index.js

const Discord = require('discord.js');
const { Intents } = Discord;
const client = new Discord.Client({
  intents: [Intents.FLAGS.GUILDS, Intents.FLAGS.GUILD_MEMBERS, Intents.FLAGS.GUILD_MESSAGES]
});

const welcomeBot = require('./Commands/welcome-bot');
const Zaehlung = require('./Commands/Zaehlung');

const channelId = '1132493981956194381';
const targetChannelId = '1132493981771628610';
const verifiedRoleId = '1132493981306077190';

client.on('ready', async () => {
  console.log(`Logged in as ${client.user.tag}`);

  const targetChannel = await client.channels.fetch(targetChannelId);

  const button = new Discord.MessageButton()
    .setStyle('PRIMARY')
    .setLabel('Verifizieren')
    .setCustomId('verify');

  const row = new Discord.MessageActionRow().addComponents(button);

  await targetChannel.send({
    content: 'Klicke auf den Button, um dich zu verifizieren:',
    components: [row]
  });

  console.log('Code reached here.');
});

client.on('message', async (message) => {
  if (message.channel.id === channelId && !message.author.bot) {
    Zaehlung.processMessage(message, channelId);
  }
});

client.on('guildMemberAdd', async (member) => {
  welcomeBot(member);
});

client.once('ready', () => {
  console.log('Bot ist bereit.');
});

client.login('');

Meine AntiBot.js Was in ordner Commands ist

const Discord = require('discord.js');


module.exports = async (client) => {
    console.log('Bot ist bereit.');


    const targetChannelId = '1132493981771628610';
    const verifiedRoleId = '1132493981306077190';


    try {
        const targetChannel = await client.channels.fetch(targetChannelId);


        const button = new Discord.MessageButton()
            .setStyle('PRIMARY')
            .setLabel('Verifizieren')
            .setCustomId('verify');


        const row = new Discord.MessageActionRow().addComponents(button);


        await targetChannel.send({
            content: 'Klicke auf den Button, um dich zu verifizieren:',
            components: [row],
        });
    } catch (error) {
        console.error('Fehler beim Senden des Buttons:', error);
    }
};


client.on('interactionCreate', async (interaction) => {
    if (!interaction.isButton()) return;


    if (interaction.customId === 'verify' && interaction.user) {
        const verifiedRole = interaction.guild.roles.cache.get(verifiedRoleId);
        if (verifiedRole) {
            try {
                await interaction.member.roles.add(verifiedRole);
                await interaction.reply({
                    content: 'Du wurdest erfolgreich verifiziert!',
                    ephemeral: true,
                });
            } catch (error) {
                console.error('Fehler beim Verifizieren des Mitglieds:', error);
            }
        }
    }
});

Button Wird Bei Bot start erstellt aber wenn ich drauf klicke kommt diese fehler meldng Von Discord

Sehe mein Bild und in console gibt leider keine Fehler meldung Ich hoffe ihr könnt mir hilfen

Bild zu Frage
JavaScript, Code, Programmiersprache, node.js, Discord, Discord Bot
Discord Bot Programmieren Fehler?

Hallo Leute ich wollte eine Bot programmieren Wenn man Auf den Button klickt Soll man eine Rolle bekommen Wäre schön wenn es in Unterordner kommt habe es aber nicht hinbekommen

```

const { Client, Intents, MessageButton, MessageActionRow } = require('discord.js');

const welcomeBot = require('./Commands/welcome-bot');

const client = new Client({

intents: [

Intents.FLAGS.GUILDS,

Intents.FLAGS.GUILD_MESSAGES,

Intents.FLAGS.GUILD_MEMBERS,

],

});

client.once('ready', async () => {

console.log('Bot ist bereit.');

const targetChannelId = '1132493981771628610'; // Ersetze durch die ID des Zielkanals

const targetChannel = await client.channels.fetch(targetChannelId);

if (targetChannel && targetChannel.isText()) {

const button = new MessageButton()

.setStyle('SUCCESS')

.setLabel('Verifizieren')

.setCustomId('verify');

const row = new MessageActionRow().addComponents(button);

await targetChannel.send({

content: 'Klicke auf den Button, um dich zu verifizieren:',

components: [row],

});

}

});

client.on('interactionCreate', async (interaction) => {

if (!interaction.isButton()) return;

if (interaction.customId === 'verify' && interaction.user) {

const verifiedRole = interaction.guild.roles.cache.get('1132493981306077190');

if (verifiedRole) {

await interaction.member.roles.add(verifiedRole);

await interaction.reply({

content: 'Du wurdest erfolgreich verifiziert!',

ephemeral: true, // Nur für den Benutzer sichtbar

});

}

}

});

client.on('guildMemberAdd', async (member) => {

welcomeBot(member);

});

client.login('');

```

Fehler Meldung

Node.js v19.9.0

C:\Users\Administrator\Desktop\Discord-Bots\NeonCity>npm install discord.js

up to date, audited 25 packages in 1s

found 0 vulnerabilities

C:\Users\Administrator\Desktop\Discord-Bots\NeonCity>node index.js

C:\Users\Administrator\Desktop\Discord-Bots\NeonCity\index.js:6

Intents.FLAGS.GUILDS,

^

TypeError: Cannot read properties of undefined (reading 'FLAGS')

at Object.<anonymous> (C:\Users\Administrator\Desktop\Discord-Bots\NeonCity\index.js:6:17)

at Module._compile (node:internal/modules/cjs/loader:1275:14)

at Module._extensions..js (node:internal/modules/cjs/loader:1329:10)

at Module.load (node:internal/modules/cjs/loader:1133:32)

at Module._load (node:internal/modules/cjs/loader:972:12)

at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:83:12)

at node:internal/main/run_main_module:23:47

Node.js v19.9.0

Habe Versuch zur löschen neu zur Installieren geht nix

C:\Users\Administrator\Desktop\Discord-Bots\NeonCity>

Linux, HTML, Webseite, JavaScript, Programmiersprache, Raspberry Pi, node.js, Discord, Discord Bot
Electron Datei Öffnen und Inhalt in Script übergeben?

Ich möchte in meinem Electron Programm im Menü die Möglichkeit bieten eine Datei zu öffnen. Die Datei enthält JSON. Ich möchte den Inhalt dann in meinem Script weiterverarbeiten um ihn anzuzeigen. Das ist mein Code bis jetzt:

main.js

const { app, BrowserWindow, Menu } = require('electron');
const { mainMenu } = require('./menu');
const path = require('path');


const createWindow = () => {
    const mainWindow = new BrowserWindow({
        width: 800,
        height: 600,
        webPreferences: {
            preload: path.join(__dirname, 'preload.js'),
        },
    });


    Menu.setApplicationMenu(mainMenu);


    mainWindow.loadFile(path.join(__dirname, "src/index.html"));
};


app.whenReady().then(() => {
    createWindow();


    app.on('activate', () => {
        if (BrowserWindow.getAllWindows().length === 0) {
            createWindow();
        }
    });
});


app.on('window-all-closed', () => {
    if (process.platform !== 'darwin') {
        app.quit();
    }
});

menu.js

const { app, Menu, dialog } = require('electron');
const fs = require('fs');


const template = [
    {
        label: 'Datei',
        submenu: [
            {
                label: 'Öffnen',
                accelerator: 'CmdOrCtrl+O',
                click: async () => {
                    const files = await dialog.showOpenDialog({
                        properties: ['openFile'],
                        filters: [
                            { name: 'Json', extensions: ['json'] },
                            { name: 'Alle Dateien', extensions: ['*'] }
                        ]
                    });


                    if (!files || files.canceled || files.filePaths.length === 0) return


                    const file = files.filePaths[0];
                    const fileContent = fs.readFileSync(file, 'utf-8');
                    console.log(fileContent);
                }
            }
        ]
    }
]


module.exports.mainMenu = Menu.buildFromTemplate(template);

index.html (src/index.html)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h1>Seite</h1>
    <script>
        console.log(data);
    </script>
</body>
</html>

Wie kann ich das umsetzten? Ich habe schon von IPC gelesen, es aber nicht wirklich verstanden.

Windows, Programm, HTML, JavaScript, Programmiersprache, node.js
Javascript error, wenn ich Buffer erstellen möchte?

Auf dem Server erhalte ich dieses File, enfach ein Bild, welches vom Client kommt:

Auf die Datei kann ich über die Variable thumbnail zugreifen.

Um die Datei jetzt auf der Disk zu speichern, wandele ich sie in einen Buffer um:

const handler = nextConnect({})
    .use(parseMultipartForm)
    .post(async (req, res) => {
        const thumbnail = req.files.thumbnail;


        // create a new FileReader object to read the file as ArrayBuffer
        const reader = new FileReader();
        reader.readAsArrayBuffer(thumbnail);


        // create a Promise that resolves when the file has been read
        const buffer = await new Promise((resolve, reject) => {
            reader.onload = () => {
                const arrayBuffer = reader.result;
                const buffer = Buffer.from(arrayBuffer);
                resolve(buffer);
            };
            reader.onerror = reject;
        });


        // send the buffer as the response
        res.status(200);
        res.send(buffer);
    });


export default handler;

Das funktioniert aber nicht, ich bekomme nur

POST http://localhost:3000/api/admin/add-videos 500 (Internal Server Error)

selbst wenn ich nur versuche den fertigen buffer zu loggen, bekomme ich den Fehler.

Bild zu Frage
Computer, Technik, Webseite, JavaScript, Programmiersprache, Webentwicklung, node.js, Discord
Daten senden mit fetch?

Hallo,

ich will mit der Fetch API Daten senden und abrufen. Aber wen ich dies tue, kommt ein Fehler:

POST http://127.0.0.1:5500/api net::ERR_ABORTED 405 (Method Not Allowed)

Ich weiß gar nicht, wie ich diesen Fehler beheben soll. Ich habe dazu auch nichts hilfreiches bis jetzt gefunden.

Mein Ziel ist es, Daten mit Javascript an einen Server (für den Anfang an localhost) zu senden und diese dann von einem weiteren localhost-Server abrufen.

Das ist meine Index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <section id="control-center">
        <button id="get-btn">Get Data</button>
        <button id="post-btn" onclick="test()">Post Data</button>
        <script>
            function test(){
                const data = {"name": "somename"}
                const options = {
                    method: "POST",
                    headers: {'Content-Type': 'application/json'},
                    body: JSON.stringify(data)
                }
                fetch('/api', options)
            }
        </script>
    </section>
</body>
</html>

Und das ist meine app.js:

const express = require('express')
const app = express()
app.listen(3000, () => console.log('3000'))
app.use(express.static('public'))

app.post('/api', (req, res) => {
    console.log(req)
})

Wenn jemand eine bessere Methode hat, Daten an einen Server zu senden, dann würde ich diese auch mal gerne probieren.

Webseite, JavaScript, Programmiersprache, Webentwicklung, node.js

Meistgelesene Fragen zum Thema Node.js