द्वारा संपीड़ित एक ज़िप फ़ाइल अपलोड करते समय त्रुटि मैं ज़िप फ़ाइल को संपीड़ित करने के लिए गुलप का उपयोग कर रहा हूं और फिर उसे एडब्ल्यूएस लैम्ब्डा में अपलोड कर रहा हूं। अपलोड ज़िप फ़ाइल मैन्युअल रूप से किया जाता है। गुलप द्वारा केवल संपीड़न की प्रक्रिया को संभाला जाता है।aws lambda nodejs - GULP
यहाँ मेरी gulpfile.js
var gulp = require('gulp');
var zip = require('gulp-zip');
var del = require('del');
var install = require('gulp-install');
var runSequence = require('run-sequence');
var awsLambda = require("node-aws-lambda");
gulp.task('clean', function() {
return del(['./dist', './dist.zip']);
});
gulp.task('js', function() {
return gulp.src('index.js')
.pipe(gulp.dest('dist/'));
});
gulp.task('npm', function() {
return gulp.src('./package.json')
.pipe(gulp.dest('dist/'))
.pipe(install({production: true}));
});
gulp.task('zip', function() {
return gulp.src(['dist/**/*', '!dist/package.json'])
.pipe(zip('dist.zip'))
.pipe(gulp.dest('./'));
});
gulp.task('deploy', function(callback) {
return runSequence(
['clean'],
['js', 'npm'],
['zip'],
callback
);
});
तैनाती कार्य, एक ज़िप फ़ोल्डर नामित dist.zip बनाई गई है एक index.js फाइल और एक node_modules फ़ोल्डर के होते हैं चलाने के बाद है। Node_modules फ़ोल्डर में केवल एक लॉनाश लाइब्रेरी है।
यह index.js
var _ = require('lodash');
console.log('Loading function');
exports.handler = (event, context, callback) => {
//console.log('Received event:', JSON.stringify(event, null, 2));
var b = _.chunk(['a', 'b', 'c', 'd', 'e'], 3);
console.log(b);
callback(null, event.key1); // Echo back the first key value
//callback('Something went wrong');
};
dist.zip फ़ोल्डर अपलोड करने के लिए एडब्ल्यूएस लैम्ब्डा कंसोल का उपयोग करने के बाद है। दिखा रहा है कि lodash पुस्तकालय
{
"errorMessage": "Cannot find module 'lodash'",
"errorType": "Error",
"stackTrace": [
"Function.Module._load (module.js:276:25)",
"Module.require (module.js:353:17)",
"require (internal/module.js:12:17)",
"Object.<anonymous> (/var/task/index.js:1:71)",
"Module._compile (module.js:409:26)",
"Object.Module._extensions..js (module.js:416:10)",
"Module.load (module.js:343:32)",
"Function.Module._load (module.js:300:12)",
"Module.require (module.js:353:17)"
]
}
नहीं पाया जा सकता है लेकिन जिप फोल्डर में, वहाँ एक node_modules निर्देशिका कि lodash lib होता है कोई त्रुटि है।
dist.zip
|---node_modules
|--- lodash
|---index.js
जब मैं ज़िप node_modules निर्देशिका और फाइल index.js मैन्युअल रूप से, यह ठीक काम करता है।
क्या किसी को पता है कि क्या गलत है? शायद Gulp का उपयोग कर संपीड़न करते समय, lib पथ के लिए एक गलत कॉन्फ़िगर किया गया है?
एफडब्ल्यूआईडब्ल्यू, मैं यहां एक ही समस्या का उत्तर मांग रहा हूं। गल्प-ज़िप से ज़िप फ़ाइल किसी भी तरह खराब है। मेरा संदेह यह है कि यह सापेक्ष फ़ाइल पथ कैसे संग्रहीत करता है। मेरा स्थानीय ज़िप उपकरण (WinRar) डिफ़ॉल्ट रूप से सापेक्ष फ़ाइल पथ संग्रहीत करता है और यदि मैं इसे मैन्युअल रूप से अपलोड करता हूं, तो यह ठीक चलता है। अगर मैं ज़िप फ़ाइल को ज़िप फ़ाइल बनाने देता हूं और फिर अपलोड करने के लिए सीएलआई का उपयोग करता हूं (aws lambda update-function-code --zip-file) तो यह आपके द्वारा बताए गए त्रुटियों को मिटा देता है। अब तक कोई जवाब नहीं है, लेकिन एक अलग गल्प-ज़िप हो सकता है जिसे हम ढूंढ रहे हैं। –