我正在尝试在Javascript文件中实现DynamoDB。我连续尝试了多个教程,但都无济于事。我要做的就是从我的Javascript代码(在HTML页面中运行)中进行查询。不幸的是,我的代码甚至没有做到这一点。当我尝试要求使用AWS-SDK时,它会抛出错误。我用Node.js安装了aws-sdk。在被多个教程弄糊涂之后,我得到了以下代码:
HTML:
<!DOCTYPE html>
<html>
<head>
<script src="http://requirejs.org/docs/release/2.2.0/r.js"></script>
<script src="boom.js"></script>
</head>
<body></body>
</html>
JavaScript(boom.js):
require(['aws-sdk'], function (foo) {
var CONF = require("./super_secure_conf.json");
var AWS = require("aws-sdk");
function init(){
AWS.config = new AWS.Config({
access_key_id: CONF.AWS_ACCESS_KEY_ID,
secretAccessKey: CONF.AWS_SECRET_ACCESS_KEY,
region: "us-east-1"
});
DynamoDB = new AWS.DynamoDB();
}
});
文件“ super_secret_conf.json”是一个包含我的AWS凭证的JSON文件。我曾尝试在~/.aws/credentials
之前存储凭据,但是那是行不通的。(应该credentials
是文件夹还是文件?我曾尝试将凭据保存在空白文件中,没有任何扩展名。我想提一下。)因此,我遵循了另一个教程,该教程说使用JSON方法(我知道这是非常不安全的),这就是您在此处看到的内容。我仍然收到错误消息:
Error: Module name "super_secure_conf.json" has not been loaded yet for context: _. Use require([])
所有帮助都将不胜感激。
您需要两次AWS,foo
第一次调用它。而且,您无需等待config.json require调用的回调(甚至不向其传递回调函数)。我相信您的代码需要更改为如下所示:
require(['aws-sdk', "./super_secure_conf.json"], function (AWS, CONF) {
function init(){
AWS.config = new AWS.Config({
access_key_id: CONF.AWS_ACCESS_KEY_ID,
secretAccessKey: CONF.AWS_SECRET_ACCESS_KEY,
region: "us-east-1"
});
DynamoDB = new AWS.DynamoDB();
}
});
但是我不确定该路径"./super_secure_conf.json"
是否真正起作用。这看起来像是用于在服务器端NodeJS应用程序而非浏览器端JavaScript应用程序中加载文件的路径。
请注意,您必须以这种方式加载配置的原因是因为~/.aws/credentials
加载AWS配置的方法不适用于在浏览器中运行的JavaScript应用。我认为您一直在阅读NodeJS教程,这些教程无法在浏览器中完美地转换为JavaScript。我强烈建议您先浏览浏览器中适用于JavaScript的AWS开发工具包的文档,尤其要阅读有关在浏览器中配置SDK的页面。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句