Asta e modul corect de a folosi AWS global config în JavaScript SDK?

0

Problema

Modul AWS devine configurat mi se pare foarte ciudat. Puteți aparent set config într-un singur fișier, și apoi nu trebuie să export configurat AWS obiect, puteți importa direct de la nodul module din nou. Mi-e greu sa inteleg cum/de ce funcționează:

// config.js
const AWS = require('aws-sdk')
AWS.config.update({ region: 'us-east-2', signatureVersion: 'v4' })

Apoi, într-un alt dosar, nu pot importa doar AWS ca acesta, si config magic bastoane cu ea:

// some other js file
const AWS = require('aws-sdk') // look, I didn't import this from config.js!
const s3 = new AWS.S3() // it knows how to use the right region & signature!

De ce n-aș export AWS pe care l-am configurat și de import, care în loc? Cum este configurația copiate chiar și atunci când nu sunt importatoare din config?

1

Cel mai bun răspuns

2

Dacă aruncăm o privire la codul sursă , puteți vedea că AWS obiect a config o proprietate care este inițializat.

Aceasta este, în esență obiect singleton, se bazează pe modul cache în Node.js.

De NodeJS docs:

Caching

Modulele sunt memorate în cache, după prima dată când sunt încărcate. Acest lucru înseamnă (printre altele) că fiecare apel de a solicita ("foo") va primi exact același obiect întors, dacă s-ar rezolva la fel fișierul.

Condiția nevoie.cache-ul nu este modificat, mai multe apeluri pentru a necesită ("foo") nu va determina modulul de cod să fie executată de mai multe ori. Aceasta este o caracteristică importantă. Cu ea, "parțial realizat" obiecte pot fi returnate, astfel permițându-dependențe tranzitive să fie încărcate chiar și atunci când le-ar provoca cicluri.

Pentru a avea un modul executa codul de mai multe ori, o funcție de export, și apel care funcționează.

2021-11-23 20:55:25

Marea explicație. Este un pic neliniștitor, pentru că eu sunt atât de folosit pentru modelul alții utilizare, care este de import > config > export apoi utilizați exportate obiect de-a lungul restul proiectului. E greșit să faci config si nu-l exporte. Cum să nu-și creeze o condiție de rulare? Cred că atâta timp cât config se întâmplă în timpul rulării nu?
Glenn

În alte limbi

Această pagină este în alte limbi

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................