使用Grunt进行ENOTSUP

时间:2015-05-12 19:23:19

标签: javascript node.js gruntjs grunt-contrib-concat azure-deployment

我正在使用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错误不会发生。我需要使用那些通配符来包含所有目录和文件。

1 个答案:

答案 0 :(得分:17)

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

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

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

因此修复此问题:

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

来获取咕噜声

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

在deploy.sh中,npm install可能如下所示:

eval $NPM_CMD install

您希望在其后添加以下内容

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

请注意;改变/ ** /到/ * /摆脱错误,但你放弃了 递归副本。