我正在使用Gulp压缩zip文件,然后将其上传到AWS Lambda.上传zip文件是手动完成的.只有压缩过程由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
);
});
Run Code Online (Sandbox Code Playgroud)
运行部署任务后,将创建名为dist.zip的zip文件夹,其中包含index.js文件和node_modules文件夹.node_modules文件夹仅包含lodash库.
这是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');
};
Run Code Online (Sandbox Code Playgroud)
使用AWS lambda控制台上传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)"
]
}
Run Code Online (Sandbox Code Playgroud)
但是在zip文件夹中,有一个包含lodash lib的node_modules目录.
dist.zip
|---node_modules
|--- lodash
|---index.js
Run Code Online (Sandbox Code Playgroud)
当我手动压缩node_modules目录和文件index.js时,它工作正常.
有谁知道什么是错的?也许在使用Gulp进行压缩时,lib路径配置错误?
几天前我遇到了同样的问题.
每个人都指着gulp拉链,但是gulp zip没问题.
以下工作正常:
gulp
.src(['sourceDir/**'], {nodir: true, dot: true} )
.pipe(zip('target.zip'))
.pipe(gulp.dest('build/'));
Run Code Online (Sandbox Code Playgroud)
也就是说,请注意以下内容,在src的第二个参数中,在上面:
{nodir: true, dot: true}
Run Code Online (Sandbox Code Playgroud)
也就是说,我们必须包含zip文件的点文件(例如:.config,.abc等).
因此,请在gulp的.src中包含上述内容,否则其他所有内容如copy,zip等都将是不正确的.
| 归档时间: |
|
| 查看次数: |
929 次 |
| 最近记录: |