svgdotjs / svgdom

Straightforward DOM implementation to make SVG.js run headless on Node.js
MIT License
269 stars 53 forks source link

Error during invocation: Error: ENOENT: no such file or directory, open '//data.trie' #76

Closed okwme closed 3 years ago

okwme commented 3 years ago

Trying to use inside of a js lambda function via netlify-lambda like so:

import { createSVGWindow } from 'svgdom'
import { SVG, registerWindow } from '@svgdotjs/svg.js'

export async function handler(event, context) {
  return {
    statusCode: 200,
    headers: {
      'content-type': "image/svg",
    },
    body: returnSVG(),
  }
}

function returnSVG() {
  const window = createSVGWindow()
  const document = window.document
  registerWindow(window, document)
  draw.svg('<g><rect width="100" height="50" fill="#f06"></rect></g>')
  return draw.svg()
}

(using standin draw.svg('<g><rect width="100" height="50" fill="#f06"></rect></g>') for testing but would eventually import from an svg file)

I get this error when i hit the endpoint:

Error during invocation:  Error: ENOENT: no such file or directory, open '//data.trie'
    at Object.openSync (node:fs:505:3)
    at Object.readFileSync (node:fs:401:35)
    at Module.<anonymous> (/Users/billy/GitHub/folia-app/kudzu-api/build/svg.js:221:379836)
    at Module.<anonymous> (/Users/billy/GitHub/folia-app/kudzu-api/build/svg.js:221:379880)
    at r (/Users/billy/GitHub/folia-app/kudzu-api/build/svg.js:1:158)
    at Object.<anonymous> (/Users/billy/GitHub/folia-app/kudzu-api/build/svg.js:221:484)
    at Object.<anonymous> (/Users/billy/GitHub/folia-app/kudzu-api/build/svg.js:221:252494)
    at r (/Users/billy/GitHub/folia-app/kudzu-api/build/svg.js:1:158)
    at Object.fontkit (/Users/billy/GitHub/folia-app/kudzu-api/build/svg.js:209:55)
    at r (/Users/billy/GitHub/folia-app/kudzu-api/build/svg.js:1:81402)
    at Module../src/utils/textUtils.js (/Users/billy/GitHub/folia-app/kudzu-api/build/svg.js:205:149)
    at r (/Users/billy/GitHub/folia-app/kudzu-api/build/svg.js:1:81402)
    at Module../src/utils/bboxUtils.js (/Users/billy/GitHub/folia-app/kudzu-api/build/svg.js:165:225)
    at r (/Users/billy/GitHub/folia-app/kudzu-api/build/svg.js:1:81402)
    at Module../src/dom/svg/SVGGraphicsElement.js (/Users/billy/GitHub/folia-app/kudzu-api/build/svg.js:117:194)
    at r (/Users/billy/GitHub/folia-app/kudzu-api/build/svg.js:1:81402) {
  errno: -2,
  syscall: 'open',
  code: 'ENOENT',
  path: '//data.trie'
}

The error isn't very helpful i know but it goes away when i comment out import { createSVGWindow } from 'svgdom'. I've tried importing the file directly from the node_modules in various ways but get different errors:

// import {createSVGWindow} from 'svgdom/main_module.js'
// var foo = require('../node_modules/svgdom/main-require.cjs')
// console.log({foo})

Nothing seems to work : \

Fuzzyma commented 3 years ago

I think I saw this before. Try importing import * as svgdom from 'svgdom' and use svgdom.registerWindow instead. Maybe that works