typescript - CDK სინთეზი NodejsFunction-ის ბანდლირების შეცდომით - გთხოვთ განაახლოთ თქვენი ლოკფაილი `npm install`-ით წინ დაწინაურებამდე


ვცდილობ AWS CDK-ით Lambda-ს შექმნას, საიდანაც მე ეს შეცდომა მომდის:

"npm ERR! npm ci შეუძლია პაკეტების დაყენება მხოლოდ მაშინ, როცა თქვენი package.json და package-lock.json ან npm-shrinkwrap.json სინქრონშია. გთხოვთ განაახლოთ თქვენი lock ფაილი npm install გამოყენებით წინსვლის წინ."

ამის შემდეგ ის აკეთებს შეცდომას "დაკარგულია: [პაკეტის სახელი] lock ფაილიდან" ყველა პაკეტისთვის.

ლამბდა ფოლდერი:

- helpers
- node_modules
- index.ts
- LambdaFunction.test.ts
- package.json
- package-lock.json

ჩემი მოქმედებები:

  1. მე წარმატებით დავაყენე ყველა node-modules Lambda ფოლდერში გადასვლისა და "npm install" ბრძანების შესრულების შემდეგ. ტერმინალში არ გამოჩენილა შეცდომები.
  2. მე დამატებული მაქვს საჭირო პაკეტები bundling.nodeModules-ში NodejsFunction ფუნქციის თვისებებში.
  3. ფაილში package.json, მე დავრწმუნდები, რომ "type": "module" არის
  4. მოდული Lambda-გამომგზავნელი ფუნქციიდან ვნახე ყველაფერი კოდი გარდა export async function handler(event: any, context: object) {} სკელსისა და კიდევ ყოველთვის მივიღებ შეცდომას

სტეკ კოდი:

const lambdaFunction = new NodejsFunction(this, `intoNSQueueConsumer`, {
  ...defaultProps,
  description: "description",
  entry: join(__dirname, "../src/lambda-handlers/lambdaFunction/index.ts"),
  environment: {
    ENVIRONMENT: context.environment,
  },
  bundling: {
    nodeModules: ["axios", "axios-retry", "crypto-js"], // Need to be installed
    externalModules: ["aws-sdk"], //already available in the runtime
  },
});

რედაქტირება :

  1. ყველა node-modules-ის აღების და ნებისმიერი ერთ-ერთი პაკეტის ინსტალაციის დროს გამოჩნდება შეცდომა. შესაბამისად, ეს პაკეტზე დამოკიდებული არ არის.
  2. აქ არის დოკუმენტაცია NodejsFunction-ისთვის

პასუხი #1

ამ შეცდომის გამოსწორება არის depsLockFilePath-ის დამატება ასეთად new NodejsFunction პარამეტრებში:

depsLockFilePath: join(__dirname, "../src/lambda-handlers/lambdaFunction/package-lock.json"),

თქვენ შეგიძლიათ აქ მეტი ინფორმაცია გამოთვალოთ.