Simple Express Server和Gulp出错

时间:2014-09-10 16:32:47

标签: node.js express gulp

我尝试使用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)

2 个答案:

答案 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}));