2016-07-25 7 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

Nope. Я беру его, я должен попробовать и узнать, как его добавить. – user25730

+0

Не обязательно - в сообщении об ошибке это строка 11 этого файла, где возникает ошибка. Если вы можете его найти, это может дать представление о том, какой модуль не определен. – Toby

ответ

0

Похоже, вы пытаетесь получить запрос JS через NodeJS (npm install request). Я не ошибаюсь?

Вы должны знать, что NodeJS требует использования CommonJS, тогда как dojo использует RequireJS. Оба они имеют в себе разные модульные структуры. Подробная информация here

В строке var request = dojo.require('request'); Не можете найти модуль request, так что это ошибка.

Способ получения модулей nodejs в додзё заключается в использовании dojo/node, как показано ниже.

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

Пройдите Учебник для Dojo and Node.js

Надеется, что это было полезно.

PS: У Esri есть свой объект запроса (esri/request), который вы можете использовать для получения токенов. Вместо этого вы можете использовать это.