Signature_pad: IE11 ๊ตฌ๋ฌธ ์˜ค๋ฅ˜

์— ๋งŒ๋“  2018๋…„ 11์›” 06์ผ  ยท  7์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: szimek/signature_pad

๊ธฐ๋Šฅ์„ ์š”์ฒญํ•˜๊ฑฐ๋‚˜ ๋ฒ„๊ทธ๋ฅผ ๋ณด๊ณ ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
๋ฒŒ๋ ˆ

ํ˜„์žฌ ํ–‰๋™์€ ๋ฌด์—‡์ž…๋‹ˆ๊นŒ?
package.json์„ ํ†ตํ•ด angular6์— "signature_pad": "^3.0.0-beta.3"์„ ํฌํ•จํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ชจ๋“  ๋ธŒ๋ผ์šฐ์ €์—์„œ ์ž˜ ์ž‘๋™ํ•˜์ง€๋งŒ IE11์—์„œ๋Š” ์˜ค๋ฅ˜๋กœ ์ธํ•ด ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋กœ๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

image

์„ค๋ช…์ด ์—†๋Š” "Syntaxerror" ๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ€์ ธ์˜ค์‹ญ์‹œ์˜ค.
๋ณ€๊ฒฝ:
import SignaturePad from 'signature_pad';
์—๊ฒŒ:
import * as SignaturePad from 'signature_pad/dist/signature_pad';

๋ชจ๋“  7 ๋Œ“๊ธ€

Angular 6 ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ž์‹ ์˜ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ Babel ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

webpack resolve.alias ๊ธฐ๋Šฅ(ํ…Œ์ŠคํŠธ๋˜์ง€ ์•Š์Œ)์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ ์ปดํŒŒ์ผ๋œ ๋ฒ„์ „์„ ๋Œ€์‹  ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

module.exports = {
  //...
  resolve: {
    alias: {
      signature_pad: 'signature_pad/dist/signature_pad.js'
    }
  }
};

๋น ๋ฅธ ์‘๋‹ต์— ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
์‹œ๋„ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•„์ด๋””์–ด๊ฐ€ ์ž‘๋™ํ•˜์ง€ ์•Š์œผ๋ฉด babel polyfill๋„ ์‹œ๋„ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ์ „์— ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค.

๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ€์ ธ์˜ค์‹ญ์‹œ์˜ค.
๋ณ€๊ฒฝ:
import SignaturePad from 'signature_pad';
์—๊ฒŒ:
import * as SignaturePad from 'signature_pad/dist/signature_pad';

ํ•จ์ˆ˜ ๋‹ค์šด๋กœ๋“œ(dataURL, ํŒŒ์ผ ์ด๋ฆ„) {
if (navigator.userAgent.indexOf("์‚ฌํŒŒ๋ฆฌ") > -1 && navigator.userAgent.indexOf("ํฌ๋กฌ") === -1) {
window.open(dataURL);
}
### //app.js์— ์•„๋ž˜ ๋ฌธ ์ถ”๊ฐ€ - IE 11์—์„œ๋Š” ๋‹ค๋ฅธ ๋‘ ๊ฐ€์ง€๊ฐ€ ์ง€์›๋˜์ง€ ์•Š์œผ๋ฏ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
else if(window.navigator && window.navigator.msSaveOrOpenBlob){var blobwin = dataURLToBlob(dataURL);window.navigator.msSaveOrOpenBlob(blobwin, ํŒŒ์ผ ์ด๋ฆ„);}
๋˜ ๋‹ค๋ฅธ {
var blob = dataURLToBlob(dataURL);
var url = window.URL.createObjectURL(๋ธ”๋กญ);

var a = document.createElement("a");
a.style = "display: none";
a.href = url;
a.download = filename;

document.body.appendChild(a);
a.click();

window.URL.revokeObjectURL(url);

}
}

@sdqwerty ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ webpack์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ['browser', 'module', 'main'] ๋กœ ์„ค์ •๋˜๋Š” mainFields ๋ผ๋Š” ํ•„๋“œ๊ฐ€ ์žˆ๋‹ค๋Š” ์ ์€ ์ฃผ๋ชฉํ•  ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์€ ์šฐ์„  ์ˆœ์œ„์— ์žˆ์œผ๋ฉฐ signature_pad๋Š” package.json ์— browser ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋ชจ๋“ˆ์ด ์„ ํƒ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ IE11์ด ์ง€์›ํ•˜์ง€ ์•Š๋Š” class์™€ ๊ฐ™์€ ES6 ๊ตฌ๋ฌธ์„ ํฌํ•จํ•˜๋Š” .m.js ํŒŒ์ผ์— ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.

@szimek ์—ฌ๊ธฐ์—์„œ npm์˜ ๊ถŒ์žฅ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋ธŒ๋ผ์šฐ์ € ํ•„๋“œ๋ฅผ ํฌํ•จํ•˜๋„๋ก package.json์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
https://docs.npmjs.com/files/package.json#browser

๊ทธ๋Ÿฌ๋ฉด ์ด๋Ÿฌํ•œ IE11 ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค.

module.exports = {
  resolve: {
    alias: {
      'signature_pad': 'signature_pad/dist/signature_pad' // <- hier without '.js' at the end!
    }
  }
};

๊ทธ๋ฆฌ๊ณ  Laravel-Mix์™€ ํ•จ๊ป˜:

mix.webpackConfig({
    resolve: {
        alias: {
            'signature_pad': 'signature_pad/dist/signature_pad',
        }
    }
});

Angular 6 ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๊ฐ€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ž์‹ ์˜ ์ฝ”๋“œ๋ฅผ ์ปดํŒŒ์ผํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ Babel ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ปดํŒŒ์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

webpack resolve.alias ๊ธฐ๋Šฅ(ํ…Œ์ŠคํŠธ๋˜์ง€ ์•Š์Œ)์„ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•˜๋ฉด ์ด๋ฏธ ์ปดํŒŒ์ผ๋œ ๋ฒ„์ „์„ ๋Œ€์‹  ๋กœ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

module.exports = {
  //...
  resolve: {
    alias: {
      signature_pad: 'signature_pad/dist/signature_pad.js'
    }
  }
};

v3.0.0-beta.4 ์ปดํŒŒ์ผ ๋ฒ„์ „ ์€ class ํ‚ค์›Œ๋“œ๋กœ ์ธํ•ด IE11์„ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰

๊ด€๋ จ ๋ฌธ์ œ

siggifv picture siggifv  ยท  3์ฝ”๋ฉ˜ํŠธ

davidosuna1987 picture davidosuna1987  ยท  11์ฝ”๋ฉ˜ํŠธ

rmmackay picture rmmackay  ยท  7์ฝ”๋ฉ˜ํŠธ

Sparticuz picture Sparticuz  ยท  7์ฝ”๋ฉ˜ํŠธ

50l3r picture 50l3r  ยท  3์ฝ”๋ฉ˜ํŠธ