javascript - Paket npm mana yang akan dan tidak akan bekerja pada Angular 2? Bagaimana saya bisa mengetahuinya?


Apakah sebuah paket NPM perlu dimodifikasi agar kompatibel dengan Angular 2 (misalnya menambahkan typing, membuat direktif untuknya) atau apakah paket yang ada akan bekerja? Jika tidak semuanya kompatibel, bagaimana saya tahu apa yang kompatibel dan apa yang tidak kompatibel?

Sebagai contoh, misalnya saya ingin mengimpor paket ini (https://github.com/pvorb/node-md5). Saya sadar ada paket ts-md5 untuk Angular 2 untuk melakukan md5 - saya hanya menggunakan paket ini sebagai contoh.

Bagaimana saya bisa membuat ini bekerja?

Saya telah menginstalnya menggunakan

npm install md5 --save
npm install @types/md5 --save

tapi sepertinya saya tidak bisa mengimpornya

import {md5} from 'md5';

Saya mendapatkan pesan kesalahan ini setelah saya mencoba menjalankan

Modul '"/Users/xxx/Source/tempProjects/ngUnderscore/node_modules/@types/md5/index"' merujuk ke entitas non-modul dan tidak dapat diimpor menggunakan konstruk ini.

Saya tidak yakin apa arti pesan ini. Apakah ini berarti bahwa dalam kondisi saat ini, paket ini tidak kompatibel atau apakah saya mencoba menggunakan paket ini secara salah?

Jawaban #1

Saya berhasil membuatnya bekerja menggunakan declare dan require alih-alih import (import tidak akan bekerja untuk pustaka non-modul ini)

declare const require: any;
const md5 = require('md5');

Jika Anda tidak ingin melakukan cara impor seperti ini, Anda bisa mencoba menggunakan implementasi MD5 di Typescript yang disebut ts-md5. Maka impor seperti di bawah ini seharusnya bisa berhasil. (direferensikan dari pertanyaan ini)

import { Md5 } from 'ts-md5/dist/md5'

Jika tidak ada implementasi TS, Anda dapat mencari tipe di DefinitelyTyped dan kemudian cukup menginstal paket dengan npm i --save-dev @types/{package-name}

Jawaban #2

Apakah pustaka tersebut bekerja pada proyek Anda tergantung pada banyak faktor: versi Angular Anda, versi TypeScript Anda, dll.

Dengan demikian, jelas bahwa kita seharusnya memeriksa dokumentasi pustaka dan melihat ketergantungan apa yang dimilikinya beserta versinya, dan tentu saja pustaka tersebut seharusnya versi Angular 2 dari dirinya sendiri. Mengikuti contoh Anda, ada beberapa pustaka md5 tetapi jika Anda menggunakan TypeScript mungkin Anda harus mempertimbangkan yang ini: https://www.npmjs.com/package/ts-md5

Jika kita sudah menangani semua itu tetapi masih ada sesuatu yang tidak berfungsi karena beberapa jenis ketidakcocokan, seperti misalnya:

Versi Angular saya adalah 2, pustaka yang baru saja saya pasang bekerja dengan Angular 4. Saya memiliki kode penuh dengan <template>, pustaka menggunakan <ng-template>... Apa yang bisa saya lakukan?

Anda dapat memfork perpustakaan di GitHub dan memodifikasi apa pun yang Anda butuhkan untuk memastikan itu kompatibel dengan proyek Anda. Langkah-langkah:

  1. Fork repositori pustaka dan ubah apa yang Anda butuhkan
  2. Langganan ke repositori perpustakaan utama agar diperbarui dengan perubahan
  3. Di packages.json gunakan versi library yang telah Anda fork, misalnya:
"ng2-datetime": "https://github.com/my_user/ng2-datetime/tarball/my_forked_version_name",
  1. Jika Anda pikir modifikasi Anda bisa cocok untuk pengguna lain... Buat Permintaan Tarik! :D

Artikel terkait