繁体   English   中英

如何使用导入的 JS 对象数组部署 REST API?

[英]How do I deploy REST API using an imported array of JS objects?

我一直在关注这篇文章以将 Node REST API 部署到 AWS,但我遇到了困难。 我已经设置了serverless.yml来配置 AWS REST API。 正如您所看到的,它说明了这一点和一个 DynamoDB 表。

plugins:
  - serverless-dynamodb-local

service: pair-api

provider:
  name: aws
  runtime: nodejs10.x
  stage: dev
  region: us-east-1
  iamRoleStatements:
    - Effect: Allow
      Action:
        - dynamodb:Query
        - dynamodb:Scan
        - dynamodb:GetItem
        - dynamodb:PutItem
        - dynamodb:UpdateItem
        - dynamodb:DeleteItem
      Resource:
        - { "Fn::GetAtt": ["wineTable", "Arn"] }
  environment:
    WINE_TABLE: wineTable

resources: # CloudFormation template syntax
  Resources:
    wineTable:
      Type: AWS::DynamoDB::Table
      Properties:
        TableName: wineTable
        AttributeDefinitions:
          - AttributeName: name
            AttributeType: S
        KeySchema:
          - AttributeName: name
            KeyType: HASH
        ProvisionedThroughput:
          ReadCapacityUnits: 1
          WriteCapacityUnits: 1
functions:
  app:
    handler: index.handler
    events:
      - http: ANY /pair/wine
      - http: "ANY {proxy+}"

我的index.js文件(如下)应该用一组 JS 对象填充这个端点。 出于某种原因,当我将message设置为test (见下文)时,我收到错误消息“内部服务错误”。

const serverless = require("serverless-http");
const bodyParser = require("body-parser");
const express = require("express");
const app = express();

import * as test from "./db/test";

app.use(bodyParser.json({ strict: false }));

app.get("/pair/wine", function(req, res) {
  res.send({
    success: "true",
    message: test
  });
});

module.exports.handler = serverless(app);

当我将消息设置为 JavaScript 对象时(见下文),我的 AWS API 端点返回正确的消息。

const serverless = require("serverless-http");
const bodyParser = require("body-parser");
const express = require("express");
const app = express();

import * as test from "./db/test";

app.use(bodyParser.json({ strict: false }));

app.get("/pair/wine", function(req, res) {
  res.send({
    success: "true",
    message: [{
      "test": true,
      "testing": "Test"
    }]
  });
});

module.exports.handler = serverless(app);

为 AWS API 设置GET请求以返回一组 JS 对象的正确方法是什么? 我试过以几种不同的方式导入 JS 文件(见下文),但似乎没有任何效果;

import * as test from "./db/test";
import test from "./db/test";
const test = require("./db/test");

结果我需要阅读在 Node 中导入模块的内容,它利用 ES5 的 require 语句而不是 import。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM