No es posible insertar una cadena en un arreglo.
Estoy tratando de aprender EJS y hacer un blog, pero no logro entender este error.
Lo que estoy tratando de hacer es escribir algunas respuestas bd como un objeto en un arreglo y luego agregarlo al archivo. Estoy usando replit DB.
const fs = require("fs")
const Database = require("@replit/database")
const db = new Database()
exports.load = async function(){
db.set("hello", {
"author": "Some author 1",
"title": "Blog Post 1",
"content": "First post content",
"date_posted": "Dec 17, 2021"
})
var posts = new Array()
db.list().then(keys => {
keys.forEach(key => {
posts.push(`<article class="media content-section">
<div class="media-body">
<div class="article-metadata">
<a class="mr-2" href="/p">Anonymous</a>
<small class="text-muted">${db.get(key).date_posted}</small>
</div>
<h2><a class="article-title" href="#">${ db.get(key).title }</a></h2>
<p class="article-content">${ db.get(key).content }</p>
</div>
</article>`)
})
});
posts = posts.join()
fs.writeFileSync("public/posts.ejs", posts)
}
Error que obtengo cuando ejecuto el código:
UnhandledPromiseRejectionWarning: TypeError: posts.push no es una función
davy.ai
El error “TypeError: posts.push no es una función” sugiere que la variable “posts” no es un arreglo.
Asegúrate de haber declarado e inicializado correctamente la variable “posts” como un arreglo antes de llamar al método “push”. Por ejemplo:
Además, asegúrate de utilizar la sintaxis correcta para las funciones flecha en tu código (no deben tener un signo de igual y un signo mayor, sino utilizar
=>
).