Я создаю проект Node.js (из курса Udemy) и получаю эту ошибку, когда нажимаю кнопку «Подробнее»:
Описание проблемы
После некоторой отладки и проверки подобных обсуждений вопросов и ответов я обнаружил, что проблема возникает только тогда, когда я использую фиктивный текст (например, abc) в imageUrl поле при добавлении продукта.
Если я предоставляю действительный URL-адрес изображения (например, фактическую ссылку на изображение), все работает нормально.
В одном из ответов на вопросы кто-то упомянул, что это может быть связано с вторым запросом или чем-то, связанным с тем, как извлекаются данные о продукте, но я не смог полностью понять причину.
Может кто-нибудь ясно понять? объясните почему это происходит?
Почему это работает, когда я указываю реальный URL-адрес изображения, но выдает ошибку, когда я использую фиктивный текст для imageUrl?
Примечание: Я использую файл JSON (data/product.json) для хранения данных о продукте. Файл обновляется правильно, когда я добавляю продукты, и я вижу, что там сохраняется фиктивный текст imageUrl.
TypeError: Cannot read properties of undefined (reading 'title')
at C:\Users\haris\Desktop\NODEJS\backend-1\controllers\shop.js:19:25
at C:\Users\haris\Desktop\NODEJS\backend-1\models\product.js:48:7
at C:\Users\haris\Desktop\NODEJS\backend-1\models\product.js:15:7
at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read/context:68:3)
Node.js v24.4.0
shop.js controller
const Products = require("../models/product.js");
exports.getProducts = (req, res, next) => {
Products.fetchAll((allProduct) => {
res.render("shop/product-list", {
p: allProduct,
docTitle: "All Products",
path: "/products",
});
});
};
exports.getProduct = (req, res, next) => {
const prodId = req.params.productId;
Products.findById(prodId, (product) => {
console.log(product);
res.render("shop/product-detail", {
product: product,
docTitle: product.title,
path: "/products",
});
});
};
exports.getIndex = (req, res, next) => {
Products.fetchAll((allProduct) => {
res.render("shop/index", {
p: allProduct,
docTitle: "Shop",
path: "/",
});
});
};
exports.getCart = (req, res, next) => {
res.render("shop/cart", {
path: "/cart",
docTitle: "Your Cart",
});
};
exports.getOrders = (req, res, next) => {
res.render("shop/orders", {
path: "/orders",
docTitle: "Your Orders",
});
};
exports.getCheckOut = (req, res, next) => {
res.render("shop/checkOut", {
path: "/checkout",
docTitle: "Checkout",
});
};
product.js model
const fs = require("fs");
const path = require("path");
const homePath = require("../utils/path.js");
const p = path.join(homePath, "data", "product.json");
const getProductFromFile = (cb) => {
fs.readFile(p, (err, fileCont) => {
if (err) {
cb([]);
} else {
cb(JSON.parse(fileCont));
}
});
};
module.exports = class Products {
constructor(title, imageUrl, price, description) {
this.title = title;
this.description = description;
this.imageUrl = imageUrl;
this.price = price;
this.id = Math.random().toString();
}
save() {
getProductFromFile((products) => {
products.push(this);
fs.writeFile(p, JSON.stringify(products), (err) => {
console.log(err);
});
});
}
static fetchAll(callback) {
getProductFromFile(callback);
}
static findById(id, cb) {
getProductFromFile((products) => {
const product = products.find((p) => p.id == id);
console.log(id);
cb(product);
});
}
};
product-details.ejs
[img]
Подробнее здесь: https://stackoverflow.com/questions/797 ... using-dumm
Ошибка типа: невозможно прочитать свойства неопределенного значения (чтение «заголовка») при использовании фиктивного im ⇐ Javascript
Форум по Javascript
1761037982
Anonymous
Я создаю проект Node.js (из курса Udemy) и получаю эту ошибку, когда нажимаю кнопку «Подробнее»:
[b]Описание проблемы[/b]
После некоторой отладки и проверки подобных обсуждений вопросов и ответов я обнаружил, что проблема возникает [b]только тогда, когда я использую фиктивный текст (например, abc) в imageUrl поле[/b] при добавлении продукта.
Если я предоставляю [b]действительный URL-адрес изображения[/b] (например, фактическую ссылку на изображение), все работает нормально.
В одном из ответов на вопросы кто-то упомянул, что это может быть связано с вторым запросом или чем-то, связанным с тем, как извлекаются данные о продукте, но я не смог полностью понять причину.
Может кто-нибудь ясно понять? объясните [b]почему это происходит?[/b]
Почему это работает, когда я указываю реальный URL-адрес изображения, но выдает ошибку, когда я использую фиктивный текст для imageUrl?
Примечание: Я использую файл JSON (data/product.json) для хранения данных о продукте. Файл обновляется правильно, когда я добавляю продукты, и я вижу, что там сохраняется фиктивный текст imageUrl.
TypeError: Cannot read properties of undefined (reading 'title')
at C:\Users\haris\Desktop\NODEJS\backend-1\controllers\shop.js:19:25
at C:\Users\haris\Desktop\NODEJS\backend-1\models\product.js:48:7
at C:\Users\haris\Desktop\NODEJS\backend-1\models\product.js:15:7
at FSReqCallback.readFileAfterClose [as oncomplete] (node:internal/fs/read/context:68:3)
Node.js v24.4.0
shop.js controller
const Products = require("../models/product.js");
exports.getProducts = (req, res, next) => {
Products.fetchAll((allProduct) => {
res.render("shop/product-list", {
p: allProduct,
docTitle: "All Products",
path: "/products",
});
});
};
exports.getProduct = (req, res, next) => {
const prodId = req.params.productId;
Products.findById(prodId, (product) => {
console.log(product);
res.render("shop/product-detail", {
product: product,
docTitle: product.title,
path: "/products",
});
});
};
exports.getIndex = (req, res, next) => {
Products.fetchAll((allProduct) => {
res.render("shop/index", {
p: allProduct,
docTitle: "Shop",
path: "/",
});
});
};
exports.getCart = (req, res, next) => {
res.render("shop/cart", {
path: "/cart",
docTitle: "Your Cart",
});
};
exports.getOrders = (req, res, next) => {
res.render("shop/orders", {
path: "/orders",
docTitle: "Your Orders",
});
};
exports.getCheckOut = (req, res, next) => {
res.render("shop/checkOut", {
path: "/checkout",
docTitle: "Checkout",
});
};
product.js model
const fs = require("fs");
const path = require("path");
const homePath = require("../utils/path.js");
const p = path.join(homePath, "data", "product.json");
const getProductFromFile = (cb) => {
fs.readFile(p, (err, fileCont) => {
if (err) {
cb([]);
} else {
cb(JSON.parse(fileCont));
}
});
};
module.exports = class Products {
constructor(title, imageUrl, price, description) {
this.title = title;
this.description = description;
this.imageUrl = imageUrl;
this.price = price;
this.id = Math.random().toString();
}
save() {
getProductFromFile((products) => {
products.push(this);
fs.writeFile(p, JSON.stringify(products), (err) => {
console.log(err);
});
});
}
static fetchAll(callback) {
getProductFromFile(callback);
}
static findById(id, cb) {
getProductFromFile((products) => {
const product = products.find((p) => p.id == id);
console.log(id);
cb(product);
});
}
};
product-details.ejs
[img]
Подробнее здесь: [url]https://stackoverflow.com/questions/79795642/typeerror-cannot-read-properties-of-undefined-reading-title-when-using-dumm[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия