Estoy tratando de obtener una cadena de un archivo SVG.
Lo que quiero conseguir:
"<svg width="100" height="100"> <circle cx="50" cy="50" r="40" stroke="green" stroke-width="4" fill="yellow" /> </svg>"Lo que he probado:
const svgFile = await fsPromises.readFile(`./icons/${directoryName}/${iconName}`) const serializer = new XMLSerializer() const svgString = serializer.serializeToString(svgFile) console.log(svgString)Salida: ReferenceError: XMLSerializer no está definido
Parece que está intentando usar clases de navegador en node. A menos que esté utilizando otro marco, como Electron, esto no es posible de forma inmediata.
Sin embargo, a menudo hay algunas bibliotecas que pueden actuar como reemplazo directo.
Para XMLSerializer, encontré https://www.npmjs.com/package/xmlserializer .
Si no está realizando más procesamiento, también puede leerlo directamente en una cadena.
const svgString = await fsPromises.readFile(`./icons/${directoryName}/${iconName}`, "utf8");A diferencia de la otra respuesta, esta es más corta.
Encontré una solución bastante simple. La lectura del archivo devuelve un búfer que luego se puede convertir en una cadena.
const svgFileData = await fsPromises.readFile(`./icons/${directoryName}/${iconName}`) console.log(svgFileData.toString())