Gulp.js 开发进程不是 test/prod
Gulp.js process working on dev by not test/prod
我有一个使用 gulp-phantom 插件的 gulp.js 进程,它在我的开发设置 Mac OS X 10.10 上完美运行,但是在我的测试 / prod 环境(EC2 Amazon Linux)它根本不起作用,但是它也没有给出任何类型的错误消息或任何其他有用的输出,任务几乎立即开始并再次完成:
开发环境输出:
$ gulp crawlSite
[17:39:19] Using gulpfile ~/Documents/dev/mysite.co.uk/gulpfile.js
[17:39:19] Starting 'crawlSite'...
[17:40:15] Finished 'crawlSite' after 57 s
测试环境输出:
$ gulp crawlSite
[17:34:27] Using gulpfile /var/www/html/mysite.co.uk/gulpfile.js
[17:34:27] Starting 'crawlSite'...
[17:34:27] Finished 'crawlSite' after 715 ms
正如您在开发环境中看到的那样,该过程需要 57 秒,但在测试中它只有 715 毫秒,并且在测试中它没有创建我的虚拟脚本应该创建的文件。我的 gulp 任务很简单:
gulp.task('crawlSite', function() {
return gulp.src("phantom-crawl-website.js")
.pipe(phantom());
});
我的幻影脚本 "phantom-crawl-website.js" 文件与 gulpfile.js 文件位于同一目录中。
我已检查所有节点模块是否已安装,PhantomJS 是否已全局安装在测试环境中,一切正常。如果我运行:
$ phantomjs phantom-crawl-website.js
从测试环境的命令提示符运行正常,它会抓取站点并创建文件。
我曾尝试对 "debug" 使用 gulp-phantom 选项,但是我似乎永远看不到任何输出。我试过使用 gulp-debug 以及如下:
gulp.task('crawlSite', function() {
return gulp.src("phantom-crawl-website.js")
.pipe(phantom({debug: true}))
.pipe(debug());
});
然而,所有这一切只是给我 gulp-幻影输出文件名 ("phantom-crawl-website.txt")。我还尝试用以下方式编写 gulp-phantom 输出文件:
gulp.task('crawlSite', function() {
return gulp.src("phantom-crawl-website.js")
.pipe(phantom({debug:true}))
.pipe(gulp.dest("./phantomOutput/"));
});
但我从中得到的只是在 "phantomOutput" 目录中创建的一个名为 "phantom-crawl-website.txt".
的空白文件
任何人都可以告诉我我做错了什么以及我如何能够看到 phantomJS 调试输出以便我找出问题所在。
提前致谢。
更新
我通过将以下内容添加到 gulp-phantom index.js 文件中,设法从 gulp-phantom 进程获得了一些输出:
program.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
添加后,我现在收到以下错误消息:
stderr: Can't open '/dev/stdin'
但仍然没有运气让它真正发挥作用。
发现问题。在 gulp-phantom 模块中,使用 /dev/stdin 似乎是一个错误,因为 phantomjs 期望传递幻影文件名。在 Mac OS X 上,/dev/stdin 包含文件的内容,但在 Linux 上,它被拒绝读取它的权限。
为了解决这个问题,我删除了将“/dev/stdin”推入参数堆栈的行,然后在 "through" 函数调用中进一步添加了一个以传递完整路径和文件名改为 phantomjs 进程。
我将向 gulp-phantom 模块创建者发出拉取请求,看看他们是否接受此作为问题的修复。
我有一个使用 gulp-phantom 插件的 gulp.js 进程,它在我的开发设置 Mac OS X 10.10 上完美运行,但是在我的测试 / prod 环境(EC2 Amazon Linux)它根本不起作用,但是它也没有给出任何类型的错误消息或任何其他有用的输出,任务几乎立即开始并再次完成:
开发环境输出:
$ gulp crawlSite
[17:39:19] Using gulpfile ~/Documents/dev/mysite.co.uk/gulpfile.js
[17:39:19] Starting 'crawlSite'...
[17:40:15] Finished 'crawlSite' after 57 s
测试环境输出:
$ gulp crawlSite
[17:34:27] Using gulpfile /var/www/html/mysite.co.uk/gulpfile.js
[17:34:27] Starting 'crawlSite'...
[17:34:27] Finished 'crawlSite' after 715 ms
正如您在开发环境中看到的那样,该过程需要 57 秒,但在测试中它只有 715 毫秒,并且在测试中它没有创建我的虚拟脚本应该创建的文件。我的 gulp 任务很简单:
gulp.task('crawlSite', function() {
return gulp.src("phantom-crawl-website.js")
.pipe(phantom());
});
我的幻影脚本 "phantom-crawl-website.js" 文件与 gulpfile.js 文件位于同一目录中。
我已检查所有节点模块是否已安装,PhantomJS 是否已全局安装在测试环境中,一切正常。如果我运行:
$ phantomjs phantom-crawl-website.js
从测试环境的命令提示符运行正常,它会抓取站点并创建文件。
我曾尝试对 "debug" 使用 gulp-phantom 选项,但是我似乎永远看不到任何输出。我试过使用 gulp-debug 以及如下:
gulp.task('crawlSite', function() {
return gulp.src("phantom-crawl-website.js")
.pipe(phantom({debug: true}))
.pipe(debug());
});
然而,所有这一切只是给我 gulp-幻影输出文件名 ("phantom-crawl-website.txt")。我还尝试用以下方式编写 gulp-phantom 输出文件:
gulp.task('crawlSite', function() {
return gulp.src("phantom-crawl-website.js")
.pipe(phantom({debug:true}))
.pipe(gulp.dest("./phantomOutput/"));
});
但我从中得到的只是在 "phantomOutput" 目录中创建的一个名为 "phantom-crawl-website.txt".
的空白文件任何人都可以告诉我我做错了什么以及我如何能够看到 phantomJS 调试输出以便我找出问题所在。
提前致谢。
更新
我通过将以下内容添加到 gulp-phantom index.js 文件中,设法从 gulp-phantom 进程获得了一些输出:
program.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
添加后,我现在收到以下错误消息:
stderr: Can't open '/dev/stdin'
但仍然没有运气让它真正发挥作用。
发现问题。在 gulp-phantom 模块中,使用 /dev/stdin 似乎是一个错误,因为 phantomjs 期望传递幻影文件名。在 Mac OS X 上,/dev/stdin 包含文件的内容,但在 Linux 上,它被拒绝读取它的权限。
为了解决这个问题,我删除了将“/dev/stdin”推入参数堆栈的行,然后在 "through" 函数调用中进一步添加了一个以传递完整路径和文件名改为 phantomjs 进程。
我将向 gulp-phantom 模块创建者发出拉取请求,看看他们是否接受此作为问题的修复。