Grunt: 致命错误:watch EPERM

10

您可以在此处查看/克隆完整代码:https://github.com/mlewisTW/grunt-tests

我想要监视src目录(进行最小化、连接、less等操作),这将把所有内容放入build目录。我还想监视build目录以进行实时重新加载。以下是监视配置片段:

watch: {
        options: {
            livereload: false
        },
        build: {
            files: ['<%= srcDir %>/**/*'],
            tasks: 'build'
        },
        reload: {
            files: ['<%= buildDir %>/**/*'],
            options: {
                livereload: true
            }
        }
    },

我正在使用Windows 8。当我更改文件并启动build任务(clean)的第一步时,出现Fatal error: watch EPERM错误提示。我猜想这与我试图删除一个正在被监控的目录有关。

是否有方法在构建时关闭livereload监视任务,完成后再重新启动它?

还有其他/更好的方法吗?


你解决了这个问题吗?我也遇到了同样的问题。 - Brett Pennings
似乎是一个“随机”的Windows问题,根据这个问题,在第一次之后,第二次“grunt watch”可以解决这个问题。你能试试吗?否则可能与权限有关,你的shell/git shell/等是否以管理员模式运行? - Fer To
El Capitan 也遇到了这个问题,有人说是由于 rootless 改变导致 /usr/bin 不再可写。你使用的是 El Capitan 吗? - beta208
当通过手动安装或使用软件包管理器安装时,Node和NPM的权限可能会有点混乱。我建议尝试通过安装NVM来解决这个问题,它位于您的个人目录下并且没有权限冲突。上面的存储库在我的环境中运行良好,我正在使用Node v6.2.0 - rels
1个回答

1

来自Github issues:

在Windows上,EPERM表示您无法删除或写入文件。

通常是因为另一个进程正在持有文件的句柄。

有时,在Windows上使用nodeJS会出现这种情况。如果再运行一次,它就会好。


1
正如 @Dave Foster 指出的那样,如果您完全复制答案,将来您应该引用答案的来源。 - Derek Brown

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接