>source

serverless-stack.com의 가이드를 따라 하나의 모노 리포지토리에서 여러 서비스로 API를 나누었습니다. 코드는 seed.run을 사용하여 잘 배포되지만 reactjs 웹 클라이언트에서 일부 엔드 포인트에 도달하려고하면 API에서 오류가 발생합니다.

console.log 오류를 시도했지만 자세한 내용은 밝히지 않습니다. stackowerflow의 다른 질문에서 ES6 또는 babel과 관련이있을 수 있지만 확실하지 않습니다.

내 .babelrc는 다음과 같습니다 :

{
  "plugins": ["source-map-support", "transform-runtime"],
  "presets": [
    ["env", { "node": "8.10" }],
    "stage-3"
  ]
}

AWS (cloudwatch)에서 다음 오류가 발생합니다.

Syntax error in module 'list': SyntaxError
(function (exports, require, module, __filename, __dirname) { import * as dynamoDbLib from "./libs/dynamodb-lib";
^^^^^^
SyntaxError: Unexpected token import
at createScript (vm.js:80:10)
at Object.runInThisContext (vm.js:139:10)
at Module._compile (module.js:616:28)
at Object.Module._extensions..js (module.js:663:10)
at Module.load (module.js:565:32)
at tryModuleLoad (module.js:505:12)
at Function.Module._load (module.js:497:3)
at Module.require (module.js:596:17)
at require (internal/module.js:11:18) .

내가 놓칠 수있는 아이디어가 있습니까?

업데이트 :

내 바벨 :

{
  "presets": [
      [
          "env",
          {
              "targets": {
                  "node": "8.1"
              }
          }
      ]
  ]
}

내 webpack.config.js

const nodeExternals = require("webpack-node-externals");
module.exports = {
  entry: slsw.lib.entries,
  target: "node",
  // Generate sourcemaps for proper error messages
  devtool: 'source-map',
  // Since 'aws-sdk' is not compatible with webpack,
  // we exclude all node dependencies
  externals: [nodeExternals()],
  mode: slsw.lib.webpack.isLocal ? "development" : "production",
  optimization: {
    // We no not want to minimize our code.
    minimize: false
  },
  performance: {
    // Turn off size warnings for entry points
    hints: false
  },
  // Run babel on all .js files and skip those in node_modules
  module: {
    rules: [
      {
        test: /\.js$/,
        loader: "babel-loader",
        include: __dirname,
        exclude: /node_modules/
      }
    ]
  }
};

Package.json

{
  "name": "api",
  "version": "1.1.4",
  "description": "Backend API for APP.",
  "main": "handler.js",
  "scripts": {
    "test": "jest"
  },
  "devDependencies": {
    "@types/node": "^10.12.18",
    "body-parser": "^1.18.3",
    "nodemon": "^1.18.9",
    "aws-sdk": "^2.224.1",
    "babel-cli": "^6.26.0",
    "babel-core": "^6.26.0",
    "babel-loader": "^7.1.2",
    "babel-polyfill": "^6.26.0",
    "babel-preset-env": "^1.6.1",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-es2017": "^6.24.1",
    "babel-plugin-source-map-support": "^1.0.0",
    "babel-plugin-transform-runtime": "^6.23.0",
    "babel-preset-env": "^1.6.1",
    "babel-preset-stage-3": "^6.24.1",
    "jest": "^21.2.1",
    "serverless-offline": "^3.18.0",
    "serverless-webpack": "^5.1.0",
    "webpack": "^4.2.0",
    "webpack-node-externals": "^1.6.0"
  },
  "dependencies": {
    "babel-runtime": "^6.26.0",
    "source-map-support": "^0.4.18",
    "stripe": "^5.8.0",
    "uuid": "^3.2.1"
  }
}

  • 답변 # 1

    Babel 버전 6을 사용하여 Node 8.1을 실행하는 lambda 함수에 코드를 성공적으로 배포했습니다. 위에서 언급 한 것과 똑같은 문제가있었습니다. 나를위한 해결책 :

    와이즈 위즈  파일

    .babelrc
    
    

    { "presets": [ [ "env", { "targets": { "node": "8.1" } } ] ] } 로부터의 의존성

    package.json
    
    

    "devDependencies": { "@types/node": "^10.12.18", "body-parser": "^1.18.3", "express": "^4.16.4", "nodemon": "^1.18.9", "babel-cli": "^6.26.0", "babel-core": "^6.26.0", "babel-loader": "^7.1.2", "babel-polyfill": "^6.26.0", "babel-preset-env": "^1.6.1", "babel-preset-es2015": "^6.24.1", "babel-preset-es2017": "^6.24.1" }, 의 스크립트

    package.json
    
    

  • 답변 # 2

    가져 오기 구문은 Node v8.x.x에서 사용할 수 없습니다. Bogdan Alexandru Militaru처럼필요를 대신 사용하거나 babel로 컴파일하십시오.

    "clean": "rm -rf dist", "build": "npm run clean && babel ./lambda/custom/ -d dist && cp lambda/custom/package.json dist/", "start": "nodemon", "serveo": "ssh -R 80:localhost:3000 serveo.net", "deploy": "npm run build && ask deploy",

관련 자료

  • 이전 bash - rsync 후 PHP로 targz 추출
  • 다음 matplotlib - 파이썬에서 특수 문자가있는 범례 레이블에 변수 포함