1
1
const queryString = require ( 'querystring' ) ;
2
2
const { promisify } = require ( 'util' ) ;
3
3
const packers = require ( './packers' ) ;
4
- const { Canvas, Image } = require ( 'canvas-prebuilt ' ) ;
4
+ const { Canvas, Image } = require ( 'canvas' ) ;
5
5
6
6
// Helper for extracting all nodes defining a specific property from a postcss rule
7
7
function getProperties ( container , propertyName ) {
@@ -11,14 +11,7 @@ function getProperties(container, propertyName) {
11
11
async function getCanvasImageFromImageAsset ( imageAsset ) {
12
12
const canvasImage = new Image ( ) ;
13
13
await new Promise ( ( resolve , reject ) => {
14
- canvasImage . onerror = err => {
15
- if ( err . message . includes ( 'node-canvas was built without SVG support' ) ) {
16
- err . message = 'Adding SVG images to a sprite is not possible' ;
17
- }
18
-
19
- err . message += ` (${ imageAsset . urlOrDescription } )` ;
20
- reject ( err ) ;
21
- } ;
14
+ canvasImage . onerror = err => reject ( err ) ;
22
15
canvasImage . onload = resolve ;
23
16
canvasImage . src = imageAsset . rawSrc ;
24
17
} ) ;
@@ -27,7 +20,19 @@ async function getCanvasImageFromImageAsset(imageAsset) {
27
20
28
21
async function getImageAssetFromCanvas ( canvas , assetType , assetGraph ) {
29
22
if ( assetType === 'Png' ) {
30
- const rawSrc = await promisify ( cb => canvas . toBuffer ( cb ) ) ( ) ;
23
+ let rawSrc ;
24
+ try {
25
+ rawSrc = await promisify ( cb => canvas . toBuffer ( cb ) ) ( ) ;
26
+ } catch ( err ) {
27
+ if (
28
+ err . message . includes (
29
+ 'the surface type is not appropriate for the operation'
30
+ )
31
+ ) {
32
+ err . message += ' (are you trying to add an SVG to a sprite?)' ;
33
+ }
34
+ throw err ;
35
+ }
31
36
return {
32
37
type : 'Png' ,
33
38
rawSrc
0 commit comments