Pdf.js: getDocumentκ°€ Jest/JSDom ν™˜κ²½μ—μ„œ 쀑단됨

에 λ§Œλ“  2018λ…„ 03μ›” 18일  Β·  4μ½”λ©˜νŠΈ  Β·  좜처: mozilla/pdf.js

PDF.js 2.0.385 μ΄μƒμ—μ„œ λ‹€μŒκ³Ό 같은 κ°€μž₯ κ°„λ‹¨ν•œ 예제λ₯Ό μ‹€ν–‰ν•©λ‹ˆλ‹€.

pdf.getDocument({ data: arrayBufferData })
  .then(() => console.log('Success'))
  .catch() => console.log('Fail'));

λΆ„λͺ…νžˆ Node.jsμ—μ„œ 잘 μ‹€ν–‰λ©λ‹ˆλ‹€.

이 μ˜ˆμ œμ—μ„œμ™€ 같이 Jestμ—μ„œ λ™μΌν•œ 뢀뢄을 μ‹€ν–‰ν•©λ‹ˆλ‹€(λ‹¨μˆœν™”λ¨, ν…ŒμŠ€νŠΈκ°€ 비동기식이어야 ν•œλ‹€λŠ” 사싀을 λ¬΄μ‹œν•˜μ‹­μ‹œμ˜€):

describe('Test', () => {
  it('does something', () => {
    pdf.getDocument({ data: arrayBufferData })
      .then(() => console.log('Success'))
      .catch() => console.log('Fail'));
  });
}
  • testEnvironment κ°€ "node" 둜 μ„€μ •λ˜λ©΄ μ„±κ³΅ν•©λ‹ˆλ‹€.
  • testEnvironment κ°€ "jsdom" (κΈ°λ³Έκ°’)둜 μ„€μ •λœ 경우 μ€‘λ‹¨λ˜κ³  .then() 에 λ„λ‹¬ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

PDF.js 2.0.305 및 이전 λ²„μ „μ—μ„œλŠ” μž‘μ—…μžλ₯Ό μˆ˜λ™μœΌλ‘œ μ‰½κ²Œ λΉ„ν™œμ„±ν™”ν•  수 μžˆμœΌλ―€λ‘œ λ¬Έμ œκ°€ λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

이제 #9385 ν˜„μž¬ ꡬ성을 톡해 이λ₯Ό μˆ˜ν–‰ν•  수 μžˆλŠ” 방법이 μ—†μœΌλ―€λ‘œ PDF.js 및 Jest/JSDom을 μ‚¬μš©ν•˜λŠ” λͺ¨λ“  ν”„λ‘œμ νŠΈλŠ” PDF.js κ΄€λ ¨ ν•­λͺ©μ„ ν…ŒμŠ€νŠΈν•  수 μ—†μŠ΅λ‹ˆλ‹€ . testEnvironment λ₯Ό "node" 둜 μ „ν™˜ν•˜λŠ” 것은 일반적으둜 ν”„λ‘ νŠΈμ—”λ“œμ˜ λ‹€λ₯Έ λͺ¨λ“  것이 μ‹€νŒ¨ν•˜κ²Œ λ˜λ―€λ‘œ 일반적으둜 μ˜΅μ…˜μ΄ μ•„λ‹™λ‹ˆλ‹€.

1-core

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

λ‚˜λŠ” 그것을 μ²˜λ¦¬ν•˜λŠ” 데 μ„±κ³΅ν–ˆμŠ΅λ‹ˆλ‹€! λ‚˜μ²˜λŸΌ λ§‰νžŒ μ‚¬λžŒλ“€μ„ μœ„ν•΄ pdfjs.GlobalWorkerOptions.workerSrc λ˜λŠ” pdfjs.GlobalWorkerOptions.workerPort λ₯Ό μ„€μ •ν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€. λŒ€μ‹  pdf.worker.entry.js νŒŒμΌμ„ μ‚¬μš©ν•˜μ„Έμš”. κ°€μ Έμ˜€κΈ°λ§Œ ν•˜λ©΄ λμž…λ‹ˆλ‹€!

λͺ¨λ“  4 λŒ“κΈ€

ISSUE_TEMPLATE.md 및 CONTRIBUTING.md λͺ¨λ‘μ—μ„œ μ–ΈκΈ‰ν•œ λŒ€λ‘œ:
μ‚¬μš©μž 지정 κ΅¬ν˜„ 문제의 경우 μ‹€ν–‰ κ°€λŠ₯ν•œ λ¬Έμ œμ— λŒ€ν•΄ μ‹€ν–‰ κ°€λŠ₯ν•œ μ™„μ „ν•˜κ³  μž‘μ€ μ˜ˆμ œμ— λŒ€ν•œ μ•‘μ„ΈμŠ€λ₯Ό μ œκ³΅ν•΄μ•Ό ν•©λ‹ˆλ‹€. 그리고 μ‚¬λžŒλ“€μ΄ λ‹€μ–‘ν•œ JS ν”„λ ˆμž„μ›Œν¬(이 경우 "Jest")에 μ΅μˆ™ν•˜λ‹€κ³  κ°€μ •ν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€.

μ»¨ν…μŠ€νŠΈλ‚˜ μ½”λ“œκ°€ μ—†μœΌλ©΄ λ‹€μŒ 질문이 λ– μ˜€λ¦…λ‹ˆλ‹€.
μž‘μ—…μžκ°€ μ§€μ›λ©λ‹ˆκΉŒ? κ·Έλ ‡λ‹€λ©΄ workerSrc μ˜΅μ…˜μ„ μ„€μ •ν•˜κ³  μž‘μ—…μžκ°€ ν™œμ„±ν™”λœ μƒνƒœμ—μ„œ ν…ŒμŠ€νŠΈλ₯Ό μ‹€ν–‰ν•΄ λ³΄μ…¨μŠ΅λ‹ˆκΉŒ?
workerPort μ˜΅μ…˜μ„ μ‚¬μš©ν•˜μ—¬ μž‘μ—…μž νŒŒμΌμ„ λ‘œλ“œν•΄ λ³΄μ…¨μŠ΅λ‹ˆκΉŒ? μž‘μ—…μžλ₯Ό getDocument 에 전달할 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. https://github.com/mozilla/pdf.js/blob/0d391daccc2f4e4b9c91268e719bd10fe63a49ae/src/display/api.js#L129 -L130 μ°Έμ‘°

λ‚˜λŠ” 그것을 μ²˜λ¦¬ν•˜λŠ” 데 μ„±κ³΅ν–ˆμŠ΅λ‹ˆλ‹€! λ‚˜μ²˜λŸΌ λ§‰νžŒ μ‚¬λžŒλ“€μ„ μœ„ν•΄ pdfjs.GlobalWorkerOptions.workerSrc λ˜λŠ” pdfjs.GlobalWorkerOptions.workerPort λ₯Ό μ„€μ •ν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€. λŒ€μ‹  pdf.worker.entry.js νŒŒμΌμ„ μ‚¬μš©ν•˜μ„Έμš”. κ°€μ Έμ˜€κΈ°λ§Œ ν•˜λ©΄ λμž…λ‹ˆλ‹€!

μœ„μ˜ μ†”λ£¨μ…˜μ€ μ €μ—κ²Œ νš¨κ³Όκ°€ μ—†μ—ˆμŠ΅λ‹ˆλ‹€. λŒ€μ‹  jsdom λŒ€μ‹  nodeλ₯Ό μ‚¬μš©ν•˜λ„λ‘ jestλ₯Ό ꡬ성해야 ν–ˆμŠ΅λ‹ˆλ‹€(기본적으둜 ν™œμ„±ν™”λ¨)

이것을 λ‚΄ 사양 파일의 맨 μœ„μ— μΆ”κ°€ν•˜λ©΄ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

/**
 * @jest-environment node
 */

λ‚˜λ₯Ό μœ„ν•΄ μœ„μ˜ μ†”λ£¨μ…˜ 쀑 μ–΄λŠ 것도 μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. jest ν…ŒμŠ€νŠΈμ™€ ν•¨κ»˜ vue-cliλ₯Ό μ‚¬μš©ν•˜κ³  μžˆμŠ΅λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰