Khi sử dụng thư viện Google Earth Engine trên Client (package
@google/earthengine
), dựa trên example về kết nối trên client của Google: Ta có thể viết lại tương tự:
const CLIENT_ID = process.env.CLIENT_ID
import ee from '@google/earthengine'
const onImmediateFailed = () => {
ee.data.authenticateViaPopup(function () {
runAnalysis()
})
}
const runAnalysis = () => {
ee.initialize()
console.log('Connection successful!')
}
export const authenticate = () => {
return new Promise((resolve) => {
ee.data.authenticate(
CLIENT_ID,
runAnalysis,
null,
null,
onImmediateFailed
)
})
}
Mọi thứ đều ổn, đoạn text "Connection successful!" sẽ hiện nếu ta F12, nhưng nếu ta gọi bất kì một phương thức nào, chẳng hạn:
const collection = ee.ImageCollection('MODIS/006/MOD13A2')
.filterDate('2018-01-01', '2019-01-01')
.select('NDVI')
const mapObj = collection.mean()
Sẽ xuất hiện lỗi sau:
Lỗi này xảy ra khi ta sử dụng các trình đóng gói (Webpack, ESBuild,....), thường phổ biến khi dùng một số Front-End framework như React, Vue,.... được install từ CLI đi kèm với module bundler (
create-react-app
, vitejs
, vue-cli
,...) Để sửa lỗi trên, ta chỉ cần khai báo object
ee
như biến toàn cục (global), chẳng hạn:// ...
const runAnalysis = () => {
ee.initialize()
window.ee = ee
}
//....