无服务器部署错误:错误:找不到模块“ ./lib/core”

时间:2020-10-20 12:24:00

标签: python yaml serverless-framework

我在无服务器部署命令中遇到错误,并且在此错误的源头上找不到任何文档。它可以在我的本地计算机上工作,这意味着我必须安装其他东西才能使它工作,但我无法弄清楚是什么。

我正在尝试在AWS上构建。

我的serverless.yaml:

service: suqinn-python
app: suquinn-be
plugins:
  - '@serverless/enterprise-plugin'
  - serverless-pseudo-parameters
  - serverless-custom-packaging-plugin
  - serverless-python-requirements




package:
  exclude:
    - 'node_modules/**'

provider:
  name: aws
  runtime: python3.8
  profile: ${opt:profile,"AlexisLefebvre"}
  region: ${opt:region,"eu-west-2"}
  stage: ${opt:stage,"dev"}
  environment:
    STAGE: ${self:provider.stage}
    REGION: ${self:provider.region}
    DYNAMODB_SECURITIES_TABLE: ${self:custom.DynamoDBSecuritiesTableName}
  iamRoleStatements:
    - Effect: 'Allow'
      Action:
        - dynamodb:PutItem
        - dynamodb:Query
        - dynamodb:Scan
        - dynamodb:GetItem
        - dynamodb:UpdateItem
        - dynamodb:DeleteItem
      Resource: 
        - arn:aws:dynamodb:${self:provider.region}:#{AWS::AccountId}:table/${self:custom.DynamoDBTradesTableName}

    - Effect: 'Allow'
      Action:
        - s3:GetObject
      Resource: 
        - arn:aws:s3:::*

functions:
  create:
    handler: handler.create
    environment:
      STAGE: ${self:provider.stage}
    events:
      - http:
          path: form
          method: post
          cors: true
  get:
    handler: handler.get
    environment:
      STAGE: ${self:provider.stage}
    events:
      - http:
          path: form
          method: get
          cors: true
  delete:
    handler: handler.delete
    environment:
      STAGE: ${self:provider.stage}
    events:
      - http:
          path: form
          method: delete
          cors: true
  
  

custom:
  client: "kkk"
  DynamoDBTradesTableName: ${self:custom.client}-trades-${self:provider.stage}
  s3reportsName: ${self:custom.client}-reports-${self:provider.stage}

和我的buildspec.yaml:

version: 0.2
#comment
phases:
  install:
    runtime-versions:
      nodejs: 10
      python: 3.8
    commands:
      - pip install pyjwt
      - pip install pytz
      - pip install pandas_market_calendars
      - npm install serverless -g
      - npm install serverless-pseudo-parameters
      - npm install serverless-custom-packaging-plugin
      - npm install serverless-python-requirements
      - npm install @serverless/enterprise-plugin

  build:
    commands:

      - serverless deploy

2 个答案:

答案 0 :(得分:0)

只需添加到您的serverless.yml

package: # Optional deployment packaging configuration
  include: # Specify the directories and files which should be included in the deployment package
    - ./**
  exclude: # Specify the directories and files which should be excluded in the deployment package
    - 'node_modules/**'

更好的做法是仅包含与此特定lambda功能相关的文件夹,而不是所有项目文件

来自: https://www.serverless.com/framework/docs/providers/aws/guide/serverless.yml/

答案 1 :(得分:0)

这似乎来自custom-packaging-plugin。删除插件可以解决该问题,但是package.zip的大小会爆炸,这也是一个问题。将serverless.yaml修改为:

service: suqinn-python
app: suquinn-be
plugins:
  - '@serverless/enterprise-plugin'
  - serverless-pseudo-parameters
  - serverless-custom-packaging-plugin
  - serverless-python-requirements




package:
  include:
      - '*'
  exclude:
      - 'node_modules/**'
      

不幸的是仍然产生相同的错误:

错误---------------------------------------------- ----

错误:找不到模块“ ./lib/core” 在Function.Module._resolveFilename(内部/模块/cjs/loader.js:636:15) 在Function.Module._load(内部/模块/cjs/loader.js:562:25) 在Module.require(internal / modules / cjs / loader.js:692:17) 在要求时(内部/模块/cjs/helpers.js:25:18) 在对象。 (/codebuild/output/src448056649/src/node_modules/archiver/index.js:8:16) 在Module._compile(内部/模块/cjs/loader.js:778:30) 在Object.Module._extensions..js(内部/模块/cjs/loader.js:789:10) 在Module.load(internal / modules / cjs / loader.js:653:32) 在tryModuleLoad(内部/模块/cjs/loader.js:593:12) 在Function.Module._load(内部/模块/cjs/loader.js:585:3) 在Module.require(internal / modules / cjs / loader.js:692:17) 在要求时(内部/模块/cjs/helpers.js:25:18) 在对象。 (/codebuild/output/src448056649/src/node_modules/serverless-custom-packaging-plugin/lib/index.js:5:18) 在Module._compile(内部/模块/cjs/loader.js:778:30) 在Object.Module._extensions..js(内部/模块/cjs/loader.js:789:10) 在Module.load(internal / modules / cjs / loader.js:653:32) 在tryModuleLoad(内部/模块/cjs/loader.js:593:12) 在Function.Module._load(内部/模块/cjs/loader.js:585:3) 在Module.require(internal / modules / cjs / loader.js:692:17) 在要求时(内部/模块/cjs/helpers.js:25:18) 在requireServicePlugin(/usr/local/lib/node_modules/serverless/lib/classes/PluginManager.js:27:12) 在pluginsObject.modules.filter.map.name(/usr/local/lib/node_modules/serverless/lib/classes/PluginManager.js:144:20) 在Array.map() 在PluginManager.resolveServicePlugins(/usr/local/lib/node_modules/serverless/lib/classes/PluginManager.js:141:8) 在PluginManager.loadAllPlugins(/usr/local/lib/node_modules/serverless/lib/classes/PluginManager.js:127:40) 然后在service.load.then(/usr/local/lib/node_modules/serverless/lib/Serverless.js:88:39) 在tryCatcher(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/util.js:16:23) 在Promise._settlePromiseFromHandler(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:547:31) 在Promise._settlePromise(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:604:18) 在Promise._settlePromise0(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:649:10) 在Promise._settlePromises(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:729:18) 在Promise._fulfill(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:673:18) 在Promise._settlePromise(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:617:21) 在Promise._settlePromise0(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:649:10) 在Promise._settlePromises(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:729:18) 在Promise._fulfill(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:673:18) 在Promise._resolveCallback(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:466:57) 在Promise._settlePromiseFromHandler(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:559:17) 在Promise._settlePromise(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:604:18) 在Promise._settlePromise0(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:649:10) 在Promise._settlePromises(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:729:18) 在Promise._fulfill(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:673:18) 在PromiseArray._resolve(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise_array.js:127:19) 在PromiseArray._promiseFulfilled(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise_array.js:145:14) 在Promise._settlePromise(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:609:26) 在Promise._settlePromise0(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:649:10) 在Promise._settlePromises(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:729:18) 在Promise._fulfill(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:673:18) 在Promise._resolveCallback(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:466:57) 在Promise._settlePromiseFromHandler(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:559:17) 在Promise._settlePromise(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:604:18) 在Promise._settlePromise0(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:649:10) 在Promise._settlePromises(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:729:18) 在Promise._fulfill(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:673:18) 在PropertiesPromiseArray.PromiseArray._resolve(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise_array.js:127:19) 在PropertiesPromiseArray._promiseFulfilled(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/props.js:78:14) 在Promise._settlePromise(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:609:26) 在Promise._settlePromise0(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:649:10) 在Promise._settlePromises(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:729:18) 在_drainQueueStep(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/async.js:93:12) 在_drainQueue(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/async.js:86:9) 在Async._drainQueues(/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/async.js:102:5) 在Instant.Async.drainQueues处[作为_onImmediate](/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/async.js:15:14) 在runCallback(timers.js:705:18) 在tryOnImmediate(timers.js:676:5) 在processImmediate(timers.js:658:5)