我尝试使用gulp任务运行简单的Express Web服务器。我只想要一个显示索引文件的静态服务器。我可以通过运行节点模块轻松地执行此操作,但同样,我想在gulp中执行此操作。我计划扩展它以允许设置LiveReload服务器。
我已经按照许多关于设置LiveReload的教程,但是他们失败了。我假设它与正在编写文章时使用的版本有关。但我希望也许有人知道如何处理这个问题。
我创建了一个非常小的Github回购,让你可以玩我想要完成的事情:fixit
Gulpfile.js:
var gulp = require('gulp');
var EXPRESS_PORT = 4000;
var EXPRESS_ROOT = __dirname;
gulp.task('express', function () {
var express = require('express');
var app = express();
app.use(express.static(EXPRESS_ROOT));
app.listen(EXPRESS_PORT);
});
*与Gulpfile
在同一目录中有index.html
这是错误:
/var/www/clients/client1/web14/sendus-admin/node_modules/express/node_modules/etag/index.js:55
throw new TypeError('argument entity must be string or Buffer')
^
TypeError: argument entity must be string or Buffer
at etag (/var/www/clients/client1/web14/sendus-admin/node_modules/express/node_modules/etag/index.js:55:11)
at SendStream.setHeader (/var/www/clients/client1/web14/sendus-admin/node_modules/express/node_modules/send/index.js:724:15)
at SendStream.send (/var/www/clients/client1/web14/sendus-admin/node_modules/express/node_modules/send/index.js:500:8)
at onstat (/var/www/clients/client1/web14/sendus-admin/node_modules/express/node_modules/send/index.js:585:10)
at Object.oncomplete (fs.js:97:15)
答案 0 :(得分:3)
我遇到了同样的问题,一周之后没有Gulp和BrowserSync工作(组合给我同样的错误),我采取了更严厉的选择,如重新安装Node.js.最后,对我有用的是使用nvm降级到Node.js版本10(我之前使用的是11)。
nvm install 0.10
nvm use 0.10
然后刚刚更新并使用了Gulp:
npm update
gulp
当然也希望能帮到你。
答案 1 :(得分:0)
一周以来,Express.static遇到了同样的问题。为Express.static禁用ETAG可以解决这个问题,直到有更好的解决方法:
app.use(express.static(path.join(__dirname, '/static'), {etag: false}));