在这教程之后,使用angular实现AWS,我将从jshint获得AWS is not defined (使用grunt为应用程序服务)。
我已经用bower install aws-sdk-js --save安装了sdk,它正确地出现在我的index.html文件中。
这是我的控制器:
angular.module('myApp')
.controller('S3uploadCtrl', function ($scope) {
console.log(AWS);
$scope.creds = {
bucket: 'myBucket',
accessKey: 'accKey',
secretKey: 'secKey'
};
$scope.upload = function() {
// Configure The S3 Object
AWS.config.update({ accessKeyId: $scope.creds.accessKey, secretAccessKey: $scope.creds.secretKey });
AWS.config.region = 'us-west-2';
var bucket = new AWS.S3({ params: { Bucket: $scope.creds.bucket } });
if($scope.file) {
var params = { Key: $scope.file.name, ContentType: $scope.file.type, Body: $scope.file, ServerSideEncryption: 'AES256' };
bucket.putObject(params, function(err, data) {
if(err) {
// There Was An Error With Your S3 Config
alert(err.message);
return false;
}
else {
// Success!
alert('Upload Done');
}
})
.on('httpUploadProgress',function(progress) {
// Log Progress Information
console.log(Math.round(progress.loaded / progress.total * 100) + '% done');
});
}
else {
// No File Selected
alert('No File Selected');
}
};
function alert(msg) {
console.alert(msg);
}
});谷歌上并没有太多这方面的内容。我发现了另一个所以问题,我一直试图跟踪它,但没有结果。(更改了<script>标签的顺序等)
发布于 2015-10-31 16:08:15
这是一个JSHint错误。JSHint确保您正在访问已定义的变量,并且不知道AWS全局变量存在et运行时。因此,您需要告诉JSHint这个globa变量是存在的,并且允许您的代码访问这个全局变量(尽管您可能应该将它隐藏在一个角度服务的后面,以使您的代码可测试)。
编辑您的.jshintrc文件(它可能有另一个名称:检查您的构建配置),并添加(或修改)以下规则:
"globals": { "AWS" : false }发布于 2015-10-31 16:07:54
如果您只是得到一个JSHint错误,这可能是因为AWS没有被识别为一个变量。在项目根目录中创建一个.jshintrc文件,并将此配置放在其中:
"globals": {
"AWS": false
}发布于 2019-05-16 06:49:16
'AWS未定义‘当您忘记定义js时会发生此错误,在"bower install aws js“之后,您需要在脚本标记中将"aws-sdk.min.js”和"aws-sdk.js“定义为您的index.html,如下所示
<script src="bower_components/aws-sdk/dist/aws-sdk.min.js"></script> <script src="bower_components/aws-sdk/dist/aws-sdk.js"></script>
https://stackoverflow.com/questions/33453580
复制相似问题