我正试图在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"是一个json文件,包含我的AWS凭据。我以前尝试过将凭据存储在~/.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配置的~/.aws/credentials
方法不适用于在浏览器中运行的JavaScript应用程序。我想你已经阅读了NodeJS教程,这些教程不会在浏览器中完美地转换为JavaScript。我强烈建议您首先在浏览器中查看AWS SDK for JavaScript的文档,特别是阅读关于在浏览器中配置SDK的页面。