2016-07-25 401 views
0

我正在使用Javascript文件嘗試從ArcGIS Online獲取令牌。然而,每當我嘗試它,它回來了Javascript - 如何解決「未捕獲的錯誤:undefinedModule」

init.js:11 Uncaught Error: undefinedModule 

文件(GetAToken.js)如下:

dojo.ready(init); 
var request = dojo.require('request'); // npm install request 

// generate a token with your client id and client secret 
function getToken(callback) { 
    request.post({ 
     url: 'https://www.arcgis.com/sharing/rest/oauth2/token/', 
     json: true, 
     form: { 
      'f': 'json', 
      'client_id': '<<MY_CLIENT_ID>>', 
      'client_secret': '<<MY_CLIENT_SECRET>>', 
      'grant_type': 'client_credentials', 
      'expiration': '1440' 
     } 
    }, function (error, response, body) { 
     console.log(body.access_token); 
     callback(body.access_token); 
    }); 
} 

並調用它(在一個HTML文件),該位爲:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 
<script src="https://esri.github.io/calcite-bootstrap/assets/js/bootstrap.min.js"></script> 
<link rel="stylesheet" href="https://js.arcgis.com/4.0/esri/css/main.css"> 
<script src="https://js.arcgis.com/4.0/"></script> 
<script src="GetAToken.js"> 
    var MyToken = callback(getToken); 
    alert(MyToken); 
</script> 
+0

你在代碼中的任何地方看到一個名爲'init.js'的文件嗎?不是100%的問題,但值得看看有什麼文件.. – Toby

+0

沒有。我認爲我應該試着找出如何添加一個。 – user25730

+0

不一定 - 在錯誤消息中,它是發生錯誤的那個文件的第11行。如果你能找到它,那可能會給出關於什麼模塊未定義的線索。 – Toby

回答

0

它看起來像你試圖通過NodeJS(npm install request)得到requestJS。我是對的?

您需要注意NodeJS需要使用CommonJS,而dojo使用RequireJS。它們都有不同的模塊結構。更多詳細信息here

在行var request = dojo.require('request');它不能找到request模塊,所以它是拋出錯誤。

在dojo中獲取nodejs模塊的方法是使用dojo/node,如下所示。

require([ "dojo/node!request" ], function(request){ 
    // Utilise the "request" module 
}); 

經過教程Dojo and Node.js

希望這是有幫助的。

PS:Esri有自己的請求對象(esri/request),您可以使用它獲取令牌。您可能想使用它。

相關問題