קורס Node.JS שיעור תרגול היכרות עם Node.JS

שלום,
אני מנסה לפתור את תרגיל 2 הבעיה כשאני מנסה לגשת לurl ע"י הfetch אני מקבלת שגיאה ‘UNABLE_TO_GET_ISSUER_CERT_LOCALLY’
העתקתי גם ממש את הפתרון שלך ככה שמסתבר שאין בעיה בקוד…
זאת השגיאה שאני מקבלת:
node:internal/deps/undici/undici:11457
Error.captureStackTrace(err, this);
^

TypeError: fetch failed
at Object.fetch (node:internal/deps/undici/undici:11457:11)
at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
at async main (D:\1full stack - front end\code example\node\lesson1\myApp\index.js:12:17) {
cause: Error: unable to get local issuer certificate
at TLSSocket.onConnectSecure (node:_tls_wrap:1540:34)
at TLSSocket.emit (node:events:513:28)
at TLSSocket._finishInit (node:_tls_wrap:959:8)
at ssl.onhandshakedone (node:_tls_wrap:743:12) {
code: ‘UNABLE_TO_GET_ISSUER_CERT_LOCALLY’
}
}
זה הקוד:
const express = require(‘express’)
const app = express()
const port = 3000

const personUrl = https://swapi.dev/api/people/1;

async function main() {
const res = await fetch(personUrl);
const data = await res.json();

const movieDetails = await Promise.all(data.films.map(url => fetch(url).then(res => res.json())))
const titles = movieDetails.map(m => m.title);
console.log(titles);

}

main();

app.get(‘/’, (req, res) => {
res.send(titles)
});

app.listen(port, () => console.log(Example app listening on port ${port}!))

נ.ב: יש לי חסימה על האינטרנט. בקוד שהשתמשתי עם api בjs\react באמת קודם cדקתי אם הקישור בכלל נפתח והסינון לא חוסם אותו.
גם פה בדקתי קודם את הקישור הוא נפתח לי כשאני מעתיקה אותו לכשעצמו בדפדפן אבל בקוד אני מקבלת את השגיאה הנ"ל… לא מאמינה שזה קשור לסינון אבל אולי את תחשוב שכן… (שוב תרגילי api רגילים לא בnode עובדים לי ברוך השם ללא בעיה…)
תודה,

הי שיר

כן זה בהחלט קשור לסינון.

כל גישה שלך לאינטרנט עוברת דרך המסנן. לדפדפן זה לא מפריע, כנראה כי התקנת את התעודה (הפרופיל) של חברת הסינון. לעומתו node.js לא מכיר את התעודה הציבורית של חברת הסינון ולכן לא מאשר את הבקשה.

דרך מאוד קלה לעקוף את זה היא לבטל את בדיקת התעודות בצד של Node.JS. בשביל זה תתחילי את התוכנית עם הפקודה:

process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; 

נסי ועדכני אותי פה אם זה עובד

עובד!!
תודה רבה!
יש עוד משהו שעולה לך שיכול לעשות לי בעיות בגלל הסינון בnode?

אי אפשר לדעת, אבל בגדול כשאת רואה הודעות שקשורות ל Certificates זה כמעט בטוח קשור לסינון. תרגישי חופשי לפרסם כאן דברים נוספים שלא עובדים ונתגבר גם עליהם