diff --git a/src/render_import_unix.js b/src/render_import_unix.js new file mode 100644 index 0000000..c6c4f6f --- /dev/null +++ b/src/render_import_unix.js @@ -0,0 +1,7 @@ +'use strict'; + +// sharp has to be required before node-canvas on linux. see https://github.com/lovell/sharp/issues/371 +import sharp from 'sharp'; +import { createCanvas, Image } from 'canvas'; + +export {sharp, createCanvas, Image}; diff --git a/src/render_import_windows.js b/src/render_import_windows.js new file mode 100644 index 0000000..56e60f9 --- /dev/null +++ b/src/render_import_windows.js @@ -0,0 +1,7 @@ +'use strict'; + +// sharp has to be required after node-canvas on windows. see https://github.com/Automattic/node-canvas/issues/2155#issuecomment-1487190125 +import { createCanvas, Image } from 'canvas'; +import sharp from 'sharp'; + +export {sharp, createCanvas, Image}; diff --git a/src/serve_rendered.js b/src/serve_rendered.js index 662549e..b1e6056 100644 --- a/src/serve_rendered.js +++ b/src/serve_rendered.js @@ -6,8 +6,6 @@ import path from 'path'; import url from 'url'; import util from 'util'; import zlib from 'zlib'; -import sharp from 'sharp'; // sharp has to be required before node-canvas. see https://github.com/lovell/sharp/issues/371 -import { createCanvas, Image } from 'canvas'; import clone from 'clone'; import Color from 'color'; import express from 'express'; @@ -20,6 +18,10 @@ import proj4 from 'proj4'; import request from 'request'; import { getFontsPbf, getTileUrls, fixTileJSONCenter } from './utils.js'; +import Os from 'os' +var ostype = (Os.platform() == 'win32') ? "windows":"unix"; +const { sharp, createCanvas, Image } = await import(`./render_import_${ostype}.js`); + const FLOAT_PATTERN = '[+-]?(?:\\d+|\\d+.?\\d+)'; const PATH_PATTERN = /^((fill|stroke|width)\:[^\|]+\|)*((enc:.+)|((-?\d+\.?\d*,-?\d+\.?\d*\|)+(-?\d+\.?\d*,-?\d+\.?\d*)))/;