AWS 的配置方式讓我覺得很奇怪。您顯然可以在一個檔案中設定配置,然后您不必export配置 AWS 物件,您可以再次直接從節點模塊匯入它。我很難理解這是如何/為什么起作用的:
// config.js
const AWS = require('aws-sdk')
AWS.config.update({ region: 'us-east-2', signatureVersion: 'v4' })
然后在其他一些檔案中,我可以像這樣匯入 AWS,并且配置神奇地堅持使用它:
// 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!
為什么我不應該匯出我配置的 AWS 并匯入它?即使我沒有從我的組態檔中匯入配置,如何復制配置?
uj5u.com熱心網友回復:
如果您查看源代碼,您會發現該AWS物件有config一個已初始化的屬性。
這本質上是單例物件,它依賴于 Node.js 中的模塊快取。
來自 NodeJS 檔案:
快取
模塊在第一次加載后被快取。這意味著(除其他外)每次呼叫 require('foo') 都會回傳完全相同的物件,如果它決議為相同的檔案。
如果 require.cache 沒有被修改,多次呼叫 require('foo') 不會導致模塊代碼被多次執行。這是一個重要的特征。有了它,可以回傳“部分完成”的物件,從而允許加載傳遞依賴項,即使它們會導致回圈。
要讓一個模塊多次執行代碼,請匯出一個函式,然后呼叫該函式。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/364756.html
