我正在使用Javascript文件尝试从ArcGIS Online获取令牌。但是,每当我尝试它时,它都会返回
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 :(得分: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
});
的教程
希望这有用。
PS:Esri有自己的请求对象(esri/request
),您可以使用它来获取令牌。您可能想要使用它。