javascript - 使用 Grunt 的 ENOTSUP

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

我正在使用 Grunt 来缩小和连接 AngularJS 网络应用程序的文件。我们的源位于文件共享上,我通过映射驱动器连接到它。每当 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 错误。我需要使用这些通配符来包含所有目录和文件。

最佳答案

我们在开始部署到 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 来升级 glob 依赖安装的 grunt 版本。

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

eval $NPM_CMD install

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

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

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

关于javascript - 使用 Grunt 的 ENOTSUP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30199739/

相关文章:

javascript - 如何比较对象内的值具有不同序列的数组javascript

javascript - 我怎样才能获取大量经常重复使用的 HTML 源代码?

node.js - Browserify在尝试捆绑许多js文件时找不到模块

javascript - CoffeeScript 模块的模式

javascript - AngularJS 之外的端到端测试

javascript - Kendo 下拉列表触发更改事件

node.js - 尝试结束 Express js 路由中的代码执行

css - for循环在较少的css mixin中不起作用

javascript - Angular 手动引导在 IE 10 上不起作用

javascript - 如何在 JavaScript 中为函数构造函数使用作用域?