不允许使用EPERM操作的grunt-contrib-copy模块“C:\ Documents and Settings”

时间:2014-06-02 02:38:13

标签: node.js gruntjs grunt-contrib-copy

我正在尝试使用grunt运行简单的grunt-contrib-copy任务,但在到达复制任务时会立即死亡,并显示以下消息:

  

运行“copy:main”(复制)任务

     

警告:EPERM,不允许操作'C:\ Documents and Settings'使用--force继续

     

因警告而中止

我正在跑步:

  • Windows 7 64位(因此C:\Documents and Settings不存在)
  • 节点0.10.28(安装在C:\nodejs
  • npm 1.4.9
  • grunt-cli 0.1.13
  • grunt 0.4.5
  • grunt-contrib-copy 0.5.0

我在C:\nodejs和我的项目文件夹(C:\Users\myusername\Documents\Programming\myprojectname上对“文档和设置”进行了全文搜索,其中没有空格或括号,但没有匹配。

我的copy任务定义是:

copy: {
    main: {
        files: [
            {expand: true, cwd: 'src/core', src: '/**', dest: 'src/chrome/'},
            {expand: true, cwd: 'src/core', src: '/**', dest: 'src/firefox/'}
        ]
    }
},

可能导致此错误的原因是什么?

1 个答案:

答案 0 :(得分:9)

我修好了。问题是原始代码中的src: '/**'属性。

我将其更改为此,现在它完美无缺:

copy: {
    main: {
        files: [
            {expand: true, cwd: 'src/core', src: '**/*', dest: 'src/chrome/'},
            {expand: true, cwd: 'src/core', src: '**/*', dest: 'src/firefox/'}
        ]
    }
},

/** src属性正在破坏它,**/*正常工作。我对Grunt很新,所以我没有意识到以前的语法是个问题;我不知何故得到了它将被视为相对路径的印象。

在发布我的问题之前,我搜索了这个问题的答案。 Grunt文档有a good explanation of Grunt's globbing patterns (*, **, etc.),但它没有提到前导斜杠是个问题。所以,我想我会为遇到这种问题的其他人留下这个。我希望它可以帮助别人。