Ошибка бессерверного развертывания: Ошибка: не удается найти модуль ‘./ lib / core’

#python #yaml #serverless-framework

#python #yaml #бессерверный фреймворк

Вопрос:

Я получаю сообщение об ошибке при выполнении команды serverless deploy и не могу найти никакой документации об источнике этой ошибки. Он работает на моем локальном компьютере, что означает, что у меня должно быть установлено что-то еще, что заставляет его работать, но я не могу понять, что.

Я пытаюсь использовать AWS.

мой бессерверный.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  

Ответ №1:

Просто добавьте в свой 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. Спасибо Дори за ваш ответ. Я изменил свой бессерверный. yaml с пакетом: include: # Укажите каталоги и файлы, которые должны быть включены в пакет развертывания — » исключить: — ‘node_modules / * ‘ но я все равно получаю ту же ошибку. Похоже, что для пользовательского модуля упаковки требуется что-то, что я установил в своих модулях узла, которое не переустановлено в моей спецификации сборки. Я мог бы решить эту проблему, удалив пользовательскую упаковку, но тогда мой zip-файл увеличивается с 500 КБ до 75 МБ, что не очень хорошо.

2. @AlexisLefebvre можете ли вы показать нам инструкцию import / require? Вы используете какой-либо webpack или другие инструменты пакета?

Ответ №2:

Похоже, это происходит из плагина custom-packaging. Удаление плагина решает эту проблему, но затем ваш package.zip увеличивается в размерах, что тоже является проблемой. Внесение изменений в бессерверный.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’ в функции.Модуль._resolveFilename (internal/modules/cjs/loader.js:636:15) в функции.Модуль._load (internal/modules/cjs/loader.js:562:25) в Module.require (internal/modules/cjs/loader.js:692:17) в require (internal/modules/cjs/helpers.js:25:18) в Object. (/codebuild/output/src448056649/src/node_modules/archiver/index.js:8:16) в модуле._compile (внутренний /modules/cjs/loader.js:778:30) в объекте.Module._extensions..js (внутренний/modules/cjs/loader.js:789:10) в модуле.загрузка (внутренняя / modules/cjs/loader.js:653:32) в tryModuleLoad (внутренняя / modules/cjs/loader.js:593:12) в функции.Модуль._load (internal/modules/cjs/loader.js:585:3) в Module.require (internal/modules/cjs/loader.js:692:17) в require (internal/modules/cjs/helpers.js:25:18) в Object. (/codebuild/output/src448056649/src/node_modules/serverless-custom-packaging-plugin/lib/index.js:5:18 ) в модуле._compile (internal/modules/cjs/loader.js:778:30) в объекте.Module._extensions..js (внутренний/modules/cjs/loader.js:789:10) в модуле.загрузка (внутренняя / modules/cjs/loader.js:653:32) в tryModuleLoad (внутренняя / modules/cjs/loader.js:593:12) в функции.Модуль._load (internal/modules/cjs/loader.js:585:3) в Module.require (internal/modules/cjs/loader.js:692:17) в require (internal/modules/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.затем (/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/ бессерверный / node_modules/ bluebird/js/release/promise.js:547:31) в Promise._settleprom (/usr/local/lib/node_modules/ бессерверный / 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) в обещании._settlePromises (/usr/local/lib/node_modules/ serverless/node_modules/bluebird/js/ release/promise.js:729:18) в обещании._fulfill (/usr/local/ lib/ node_modules/ бессерверный / node_modules/bluebird/js/ release/promise.js:673:18) в Promise._settleprom (/usr/local/lib/node_modules/ бессерверный / 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) по обещанию._fulfill (/usr/local/lib/node_modules/ serverless/node_modules/bluebird/js/release/promise.js:673:18) в обещании._resolveCallback (/usr/local/ lib/ node_modules/ бессерверный / node_modules/bluebird/js/ release/promise.js:466:57) в Promise._settlePromiseFromHandler (/usr/local/lib/node_modules/ бессерверный / node_modules/bluebird/js/release/promise.js: 559:17) в Promise._settleprom (/usr/local/lib/node_modules/ serverless/node_modules/bluebird/js/release/promise.js:604:18) в Promise._settleprom 0 (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js: 649:10) по обещанию._settlePromises (/usr/local/lib/node_modules/ serverless/node_modules/bluebird/js/ release/promise.js:729:18) в обещании._fulfill (/usr/local/ lib/node_modules/ бессерверный / node_modules/bluebird/js/ release/promise_array.js:673:18) в PromiseArray._resolve (/usr/local/lib/node_modules/ бессерверный /node_modules/bluebird/js/release/promise_array.js:127:19) в PromiseArray._promiseFulfilled (/usr/local/lib/node_modules/ бессерверный /node_modules/bluebird/js/release/promise_array.js:145:14) в Promise._settleprom (/usr/local/lib/node_modules/serverless/node_modules/bluebird/js/release/promise.js:609:26) в Promise._settlePromise0 (/usr/local/lib/ node_modules/ бессерверный / node_modules/bluebird/js/ release/promise.js:649:10) в Promise._settlePromises (/usr/local/lib/node_modules/ бессерверный / node_modules/bluebird/js/release/promise.js:729:18) в обещании._fulfill (/usr/local/lib/node_modules/ serverless/node_modules/bluebird/js/release/promise.js:673:18) в обещании._resolveCallback (/usr/local/lib/node_modules/ serverless/node_modules/bluebird/js/release/promise.js:466:57) в обещании._settlePromiseFromHandler (/usr/local/ lib/ node_modules/ бессерверный / node_modules/ bluebird/js/ release/promise.js:559:17) в Promise._settlePromise (/usr/local/lib/node_modules/ бессерверный / 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) по обещанию._fulfill (/usr/local/lib/node_modules/ serverless/node_modules/bluebird/js/release/promise.js:673:18) в PropertiesPromiseArray .PromiseArray._resolve (/usr/local/ lib/ node_modules/ бессерверный / node_modules/bluebird/js/ release/promise_array.js:127:19) в свойствах PromiseArray._promiseFulfilled (/usr/local/lib/node_modules/ бессерверный / node_modules/bluebird/js/release/ реквизит.js:78:14) в Promise._settlePromise (/usr/local/lib/ node_modules/ бессерверный / node_modules/bluebird/js/ release/promise.js:609:26) в Promise._settlePromise0 (/usr/local/lib/node_modules/ бессерверный / node_modules/bluebird/js/release/promise.js: 649:10) по обещанию._settlePromises (/usr/local/ lib/ node_modules/ бессерверный / node_modules/bluebird/js/ release/promise.js:729:18) в _drainQueueStep (/usr/local/lib/node_modules/ бессерверный / node_modules/bluebird/js/release/async.js:93:12) в_drainQueue (/usr/local/ lib/ node_modules/ бессерверный / node_modules/ bluebird/js/ release/async.js:86:9) в Async._drainQueues (/usr/local/lib/node_modules/ бессерверный / node_modules/bluebird/js/release/async.js: 102:5) немедленно.Async.drainQueues [как _onImmediate] (/usr/local/lib/node_modules/ бессерверный / node_modules/bluebird/js/ release/async.js:15:14) при обратном вызове (timers.js:705:18) в tryOnImmediate (timers.js:676:5) при промежуточном процессе (timers.js:658:5)