Mengonfigurasi dependensi aplikasi Anda - AWS Elastic Beanstalk

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengonfigurasi dependensi aplikasi Anda

Aplikasi Anda mungkin memiliki dependensi pada beberapa Node.js modul, seperti yang Anda tentukan dalam require() pernyataan. Modul-modul ini disimpan dalam node_modules direktori. Ketika aplikasi Anda berjalan, Node.js memuat modul dari direktori ini. Untuk informasi selengkapnya, lihat Memuat dari folder node_modules dalam dokumentasi. Node.js

Anda dapat menentukan dependensi modul ini menggunakan file. package.json Jika Elastic Beanstalk mendeteksi file ini node_modules dan direktori tidak ada, Elastic Beanstalk berjalan sebagai pengguna webapp. npm install npm installPerintah menginstal dependensi di node_modules direktori, yang dibuat Elastic Beanstalk sebelumnya. npm installPerintah mengakses paket yang tercantum dalam package.json file dari registri npm publik atau lokasi lain. Untuk informasi lebih lanjut, lihat situs web npm Docs.

Jika Elastic Beanstalk node_modules mendeteksi direktori, Elastic Beanstalk tidak berjalan, bahkan jika ada file. npm install package.json Elastic Beanstalk mengasumsikan bahwa paket dependensi tersedia di direktori untuk diakses dan dimuatnode_modules. Node.js

Bagian berikut memberikan informasi lebih lanjut tentang membuat dependensi Node.js modul Anda untuk aplikasi Anda.

catatan

Jika Anda mengalami masalah penerapan saat Elastic Beanstalk npm install berjalan, pertimbangkan pendekatan alternatif. Sertakan node_modules direktori dengan modul dependensi dalam bundel sumber aplikasi Anda. Melakukannya dapat menghindari masalah dengan menginstal dependensi dari registri npm publik saat Anda menyelidiki masalah tersebut. Karena modul ketergantungan bersumber dari direktori lokal, dong ini mungkin juga membantu mengurangi waktu penerapan. Untuk informasi selengkapnya, lihat Menyertakan Node.js dependensi dalam direktori node_modules

Menentukan Node.js dependensi dengan file package.json

Sertakan file package.json di akar sumber proyek Anda untuk menentukan paket dependensi dan memberikan perintah mulai. Saat package.json file ada, dan node_modules direktori tidak ada di root sumber proyek Anda, Elastic npm install Beanstalk berjalan sebagai pengguna webapp untuk menginstal dependensi dari registri npm publik. Elastic Beanstalk juga start menggunakan perintah untuk memulai aplikasi Anda. Untuk informasi selengkapnya tentang package.json file, lihat Menentukan dependensi dalam package.json file di situs web npm Docs.

Gunakan kata kunci scripts untuk memberikan perintah mulai. Saat ini, scripts kata kunci digunakan sebagai pengganti NodeCommand opsi lama di aws:elasticbeanstalk:container:nodejs namespace.

contoh package.json – Express
{ "name": "my-app", "version": "0.0.1", "private": true, "dependencies": { "ejs": "latest", "aws-sdk": "latest", "express": "latest", "body-parser": "latest" }, "scripts": { "start": "node app.js" } }
Mode produksi dan dependensi dev

Untuk menentukan dependensi Anda dalam package.json file, gunakan atribut dependensi dan devDependencies. Atribut dependencies menunjuk paket-paket yang dibutuhkan oleh aplikasi Anda dalam produksi. Atribut devDependencies menunjuk paket yang hanya diperlukan untuk pengembangan dan pengujian lokal.

Elastic npm install Beanstalk berjalan sebagai pengguna webapp dengan perintah berikut. Opsi perintah bervariasi tergantung pada versi npm yang disertakan pada cabang platform tempat aplikasi Anda berjalan.

  • npm v6 - Elastic Beanstalk menginstal dependensi dalam mode produksi secara default. Ia menggunakan perintahnpm install --production.

  • npm v7 atau lebih besar — Elastic Beanstalk menghilangkan devDependencies. Ia menggunakan perintahnpm install --omit=dev.

Kedua perintah yang tercantum di atas tidak menginstal paket yang devDependencies.

Jika Anda perlu menginstal paket devDependencies, setel properti lingkungan NPM_USE_PRODUCTION ke. false Dengan pengaturan ini kami tidak akan menggunakan opsi di atas saat menjalankan npm install. Ini akan mengakibatkan paket devDependencies diinstal.

SSH dan HTTPS

Dimulai dengan rilis platform Amazon Linux 2 7 Maret 2023, Anda juga dapat menggunakan protokol SSH dan HTTPS untuk mengambil paket dari repositori Git. Platform branch Node.js 16 mendukung protokol SSH dan HTTPS. Node.js14 hanya mendukung protokol HTTPS.

contoh package.json — Node.js 16 mendukung HTTPS dan SSH
... "dependencies": { "aws-sdk": "https://github.com/aws/aws-sdk-js.git", "aws-chime": "git+ssh://git@github.com:aws/amazon-chime-sdk-js.git" }

Versi dan rentang versi

penting

Fitur untuk menentukan rentang versi tidak tersedia untuk cabang platform Node.js yang berjalan di AL2023. Kami hanya mendukung satu versi Node.js dalam cabang Node.js tertentu di AL2023. Jika package.json file Anda menentukan rentang versi, kami akan mengabaikannya dan default ke versi cabang platform Node.js.

Gunakan engines kata kunci dalam package.json file untuk menentukan Node.js versi yang Anda ingin aplikasi Anda gunakan. Anda juga dapat menentukan rentang versi menggunakan notasi npm. Untuk informasi selengkapnya tentang sintaks untuk rentang versi, lihat Pembuatan Versi Semantik menggunakan npm di situs web. Node.js enginesKata kunci dalam Node.js package.json file menggantikan NodeVersion opsi lama di namespace. aws:elasticbeanstalk:container:nodejs

contoh package.json— Node.js Versi tunggal
{ ... "engines": { "node" : "14.16.0" } }
contoh package.json— rentang Node.js versi
{ ... "engines": { "node" : ">=10 <11" } }

Ketika rentang versi ditunjukkan, Elastic Beanstalk menginstal versi terbaru yang tersedia Node.js platform dalam kisaran tersebut. Dalam contoh ini, rentang menunjukkan bahwa versi harus lebih besar dari atau sama dengan versi 10, tetapi kurang dari versi 11. Hasilnya, Elastic Beanstalk menginstal versi 10.x.y terbaru, Node.js yang tersedia di platform yang didukung.

Sadarilah bahwa Anda hanya dapat menentukan Node.js versi yang sesuai dengan cabang platform Anda. Misalnya, jika Anda menggunakan cabang Node.js 16 platform, Anda hanya dapat menentukan 16.x.y Node.js versi. Anda dapat menggunakan opsi rentang versi yang didukung oleh npm untuk mengizinkan lebih banyak fleksibilitas. Untuk Node.js versi yang valid untuk setiap cabang platform, lihat Node.jsdi panduan AWS Elastic BeanstalkPlatform.

catatan

Ketika support versi Node.js yang digunakan dihapus dari platform, Anda harus mengubah atau menghapus pengaturan versi Node.js sebelum melakukan pembaruan platform. Hal ini mungkin terjadi ketika kelemahan keamanan diidentifikasi pada satu atau beberapa versi Node.js.

Ketika ini terjadi, upaya untuk memperbarui ke versi platform baru yang tidak support versi Node.js yang dikonfigurasi akan gagal. Agar tidak perlu membuat lingkungan baru, ubah pengaturan versi Node.js di package.json ke versi Node.js yang didukung versi platform lama dan yang baru. Anda memiliki opsi untuk menentukan rentang versi Node.js yang mencakup versi yang didukung, seperti yang dijelaskan sebelumnya dalam topik ini. Anda juga memiliki opsi untuk menghapus pengaturan, dan kemudian menerapkan bundel sumber baru.

Menyertakan Node.js dependensi dalam direktori node_modules

Untuk menyebarkan paket dependensi ke instance lingkungan bersama dengan kode aplikasi Anda, sertakan mereka dalam direktori yang diberi nama node_modules di root sumber proyek Anda. Untuk informasi selengkapnya, lihat Mengunduh dan menginstal paket secara lokal di situs web npm Docs.

Bila Anda menerapkan node_modules direktori ke versi Node.js platform Amazon Linux 2, Elastic Beanstalk mengasumsikan bahwa Anda menyediakan paket dependensi Anda sendiri, dan menghindari pemasangan dependensi yang ditentukan dalam file package.json. Node.jsmencari dependensi di direktori. node_modules Untuk informasi selengkapnya, lihat Memuat dari node_modules di dokumentasi. Node.js

catatan

Jika Anda mengalami masalah penerapan saat Elastic Beanstalk npm install berjalan, pertimbangkan untuk menggunakan pendekatan yang dijelaskan dalam topik ini sebagai solusi saat Anda menyelidiki masalah tersebut.