4

我正在使用 Grunt 来缩小和连接 AngularJS Web 应用程序的文件。我们的源位于文件共享上,我通过映射驱动器连接到它。每当 Grunt 在我的源目录上运行时,我的一个 concat 任务都会出错。错误是“ENOTSUP,套接字不支持操作”。如果我复制源,本地,Grunt 运行,很好。为了我们的源代码控制,我需要 Grunt 监视和运行映射的驱动器。concat 任务使用 grunt-contrib-concat。我尝试重新安装 Node 并将 grunt-contrib-concat 回滚到 0.4.0 版。那没有用。任何帮助/想法将不胜感激。

编辑:

Grunt 中给出错误的代码是:

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

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

4

1 回答 1

18

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

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

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

因此,对此的修复是:

a) 通过从 github 克隆而不是使用 npm 来获得咕噜声

或者

b) 在 npm install 之后,导航到/node_modules/grunt并执行 annpm 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

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

于 2016-02-02T12:47:30.250 回答