搜索

首页  >  问答  >  正文

Browserify与@google/earthengine:将JavaScript模块化的地理空间数据访问和分析打包成浏览器可用的文件

<p>我正在尝试使用Browserify来导入Google Earth Engine的Javascript API。</p> <p>我已经安装了这个模块:</p> <pre class="brush:php;toolbar:false;">npm install --save-dev @google/earthengine</pre> <p>我为测试目的创建了一个新的main.js文件:</p> <pre class="brush:php;toolbar:false;">var md = require('@google/earthengine'); module.exports = MDOutSystems; function MDOutSystems() { this.mdInstance = md; }; MDOutSystems.prototype.data.authenticateViaPrivateKey = function( privateKey, opt_success, opt_error, opt_extraScopes, opt_suppressDefaultScopes) { md.data.authenticateViaPrivateKey(privateKey, opt_success, opt_error, opt_extraScopes, opt_suppressDefaultScopes); }; MDOutSystems.prototype.initialize = function() { md.initialize(); }; MDOutSystems.prototype.Image = function(source) { md.Image(source); }; MDOutSystems.prototype.getInstance = function () { return this.mdInstance; }</pre> <p>(我收到一个警告,需要创建一个带有<code>declare module '@google/earthengine'</code>的d.ts文件)</p> <p>我使用以下代码来暴露我创建的模块:</p> <pre class="brush:php;toolbar:false;">Browserify main.js --standalone MDOutSystems > google-earth-outsystems.js</pre> <p>然而,当我尝试调用</p> <pre class="brush:php;toolbar:false;">var ee = new MDOutSystems();</pre> <p>我收到一个错误,说“MDOutSystems未定义”。</p> <p>帮帮忙。</p> <p>我尝试将main.js移动到/node_modules文件夹中,并再次运行browserify命令。实际上,这导致了一个完全不同的google-earth-outsystems.js文件,但它仍然无法工作。</p>
P粉208469050P粉208469050533 天前548

全部回复(1)我来回复

  • P粉545218185

    P粉5452181852023-08-16 00:24:47

    我猜浏览器会对代码进行压缩,并更改函数名。

    MDOutSystems()之后就无法识别了。

    将你的方法附加到window对象上。

    像这样:

    function MDOutSystems() {
      this.mdInstance = md;
    };
    
    window.MDOutSystems = MDOutSystems;

    回复
    0
  • 取消回复