使用 Grunt 的 ENOTSUP

ENOTSUP using Grunt

我正在使用 G运行t 来缩小和连接 AngularJS 网络应用程序的文件。我们的源位于文件共享上,我通过映射驱动器连接到它。每当 G运行t 运行s 在我的源目录上时,我的一个 concat 任务就会出错。错误是 "ENOTSUP, operation not supported on socket"。如果我复制源,本地,G运行t 运行s,很好。为了我们的源代码控制,我需要 G运行t 来监视映射驱动器并 运行 。 concat 任务使用 g运行t-contrib-concat。我尝试重新安装 Node 并将 g运行t-contrib-concat 回滚到版本 0.4.0。那没有用。任何 help/ideas 将不胜感激。

编辑:

G运行t中给出错误的代码是:

  jscustom: {
            src: ['src/js/*.js', 'src/js/**/*.js', 'build/temp/templates.js'],
            dest: 'build/temp/custom.js'
}

如果我从上面的代码中删除“'src/js/**/*.js'”并执行我的 G运行t 任务,则不会发生 ENOTSUP 错误。我需要使用这些通配符来包含所有目录和文件。

当我们开始部署到 Azure 时,我们 运行 遇到了这个问题。

问题很可能是由 glob(Grunt 对其有依赖)中的错误引起的。

此错误早已被修复(参见 github issue 205),但不幸的是,NPM 上最新的稳定版本是 0.4.5(两年前发布)——它依赖于 glob 版本 3.1.21 (当前版本为 6.0.4)。

所以对此的修复是:

a) 通过从 github 克隆而不是使用 npm

获得 grunt

b) npm install 后,导航至 /node_modules/grunt 并执行 npm install glob@^6.0.4 --save 以升级已安装的 grunt 版本的 glob 依赖项。

在您的 deploy.sh 中,npm 安装可能如下所示:

eval $NPM_CMD install

您需要在其后添加以下内容

pushd ./node_modules/grunt
eval $NPM_CMD install glob@^6.0.4 --save
popd

注意;将 /**/ 更改为 /*/ 消除了错误,但随后您放弃了 递归副本。