当前位置: 首页 > 知识库问答 >
问题:

使用keystone-storage-adapter-s3后的字段错误

左丘兴生
2023-03-14

我正在使用npm包keystone-storage-adapter-s3。在某种情况下,我试图将图像上传到AWS S3桶,然后使用Keystone CMS检索它们作为网站内容的一部分。我对AWS S3相当陌生,但正在尝试。

下面是有问题的图像模型。

const keystone = require('keystone');
const Types = keystone.Field.Types;

const Image = new keystone.List('Image');

const storage = new keystone.Storage({
    adapter: require('keystone-storage-adapter-s3'),
    s3: {
        key: process.env.S3_KEY, // required; defaults to process.env.S3_KEY
        secret: process.env.S3_SECRET, // required; defaults to process.env.S3_SECRET
        bucket: process.env.S3_BUCKET, // required; defaults to process.env.S3_BUCKET
        region: process.env.S3_REGION, // optional; defaults to process.env.S3_REGION, or if that's not specified, us-east-1
        uploadParams: { // optional; add S3 upload params; see below for details
          ACL: 'public-read',
        },
    },
    schema: {
        bucket: true, // optional; store the bucket the file was uploaded to in your db
        etag: true, // optional; store the etag for the resource
        path: true, // optional; store the path of the file in your db
        url: true, // optional; generate & store a public URL
    },
});

Image.add({
    name: { type: String },
    file: { type: Types.File, storage: storage },
});

Image.register();

我相信我已经填写了区域、桶名、secret(随机安全字符串),甚至创建了一个新的密钥,该密钥也安全地存储在。env文件中。

packages.js:33 POST http://localhost:3000/keystone/api/images/5bf2c27e05ba79178cd7d2be 500 (Internal Server Error)
a @ packages.js:33
i @ packages.js:33
List.updateItem @ admin.js:22863
updateItem @ admin.js:15021
r @ packages.js:16
a @ packages.js:14
s @ packages.js:14
d @ packages.js:14
v @ packages.js:14
r @ packages.js:17
processEventQueue @ packages.js:14
r @ packages.js:16
handleTopLevel @ packages.js:16
i @ packages.js:16
perform @ packages.js:17
batchedUpdates @ packages.js:16
i @ packages.js:16
dispatchEvent @ packages.js:16
    null
  • “字段错误”
  • 上载s3文件中的字段错误

我在node_modules/keystone/fields/types/file/filetype.js中找到了正在使用的调试包,并启用了它。我在尝试上载映像时收到以下调试消息。

$ DEBUG=keystone:fields:file node keystone.js

------------------------------------------------
KeystoneJS v4.0.0 started:
keystone-s3 is ready on http://0.0.0.0:3000
------------------------------------------------

GET /keystone/images/5bf2c27e05ba79178cd7d2be 200 17.446 ms
GET /keystone/api/images/5bf2c27e05ba79178cd7d2be?drilldown=true 304 3.528 ms
  keystone:fields:file [Image.file] Validating input:  upload:File-file-1001 +0ms
  keystone:fields:file [Image.file] Validation result:  true +1ms
  keystone:fields:file [Image.file] Uploading file for item 5bf2c27e05ba79178cd7d2be: { fieldname: 'File-file-1001',
  originalname: 'oof.PNG',
  encoding: '7bit',
  mimetype: 'image/png',
  destination: 'C:\\Users\\Dylan\\AppData\\Local\\Temp',
  filename: '42c161c1c36a84a244a2cf09d327afd4',
  path:
   'C:\\Users\\Dylan\\AppData\\Local\\Temp\\42c161c1c36a84a244a2cf09d327afd4',
  size: 6684 } +0ms
POST /keystone/api/images/5bf2c27e05ba79178cd7d2be 500 225.027 ms

这条消息看起来很有希望,所以我将继续查看这条消息,看看是否可以调试更多信息。

搜索还在继续。

共有1个答案

邹时铭
2023-03-14

我把我的“钥匙”和“秘密”搞混了。

根据keystone-storage-adapter-s3包,需要您的“密钥”和“秘密”。由于对AWS和web开发缺乏经验,我认为秘密是一个随机的安全字符串(就像你会用cookie签名一样),而密钥是我的秘密密钥。

错了

    null
    null
 类似资料:
  • Keystone 通过 HTTP 为 OpenStack 家族项目提供身份认证、授权和服务发现机制。这是 HTTP 接口给现有身份系统最常见的部署,例如 LDAP。

  • Keystone  ConceptMap(概念图),是一款国产的图像式思考辅助工具软件,可以帮助您进行概念分析、相关性分析,整理知识点的相互关系,构建基于图像的可视 化知识表征,更好的帮助我们理解和记忆,可用在知识管理、思维整理、教育教学等领域。Keystone ConceptMap是免费的,鼓励更多的老师、学生和知识工作者下载使用。

  • 问题内容: 通过AngularJS,我可以使用或检测用户是否输入了该字段。但是,我只想在用户离开字段区域之后进行客户端验证。这是因为,当用户输入电子邮件或电话之类的字段时,他们总是会抛出错误,直到他们完成完整的电子邮件键入为止,这并不是最佳的用户体验。 例 更新: Angular现在附带了一个自定义模糊事件:https : //docs.angularjs.org/api/ng/directive

  • 我最近从我的index.txt文件中删除了一个条目。是因为那个吗?

  • 问题内容: 我在视图中有一个表单,该表单执行自动完成和gmap本地化的ajax部分处理。我的支持bean实例化了一个实体对象“ Address”,并向该对象引用了表单的输入: 自动补全和map ajax请求可以正常工作,然后再提交时处理整个表单。如果验证失败,则即使无法在视图中更新fullAddress字段(即使在ajax请求之后在备用bean上正确设置了其值),ajax仍然可以正常工作。 如果刷

  • 我已经重新安装了node-sass,但这不起作用。