Grunt copy任务执行报错:path参数类型错误求助
问题排查与解决
我帮你找到了问题的核心——不是路径里的@符号引发的错误,而是你在autoCompleteJS和autoCompleteCSS这两个Copy任务中,错误地将dest配置成了数组格式,而Grunt的grunt-contrib-copy插件要求dest必须是字符串类型的路径。
具体问题分析
看你当前的任务配置:
autoCompleteJS: { expand: true, cwd: "wwwroot/lib/@tarekraafat/autocomplete.js/dist/js", src: ['autoComplete.min.js'], dest: ['wwwroot/js'] // 这里用了数组,是错误的写法! }, autoCompleteCSS: { expand: true, cwd: "wwwroot/lib/@tarekraafat/autocomplete.js/dist/css", src: ['autoComplete.css'], dest: ['wwwroot/css'] // 同样是数组格式,触发了类型错误 }
而你能正常运行的copy:dist任务中,dest是字符串类型的paths.cssOutput,这就是它能正常工作的原因。当dest被设置为数组时,Grunt内部处理路径的工具函数会收到一个数组而非预期的字符串,直接抛出了The "path" argument must be of type string. Received type object的警告。
修复方案
把两个任务里的dest从数组改成字符串即可:
autoCompleteJS: { expand: true, cwd: "wwwroot/lib/@tarekraafat/autocomplete.js/dist/js", src: ['autoComplete.min.js'], dest: "wwwroot/js" // 改为字符串路径 }, autoCompleteCSS: { expand: true, cwd: "wwwroot/lib/@tarekraafat/autocomplete.js/dist/css", src: ['autoComplete.css'], dest: "wwwroot/css" // 改为字符串路径 }
另外建议统一使用你定义好的paths变量来维护路径,这样更便于后续维护:
autoCompleteJS: { expand: true, cwd: paths.bower_components + "/@tarekraafat/autocomplete.js/dist/js", src: ['autoComplete.min.js'], dest: paths.webroot + "js" }, autoCompleteCSS: { expand: true, cwd: paths.bower_components + "/@tarekraafat/autocomplete.js/dist/css", src: ['autoComplete.css'], dest: paths.cssOutput }
验证修复
修改完成后,单独运行copy:autoCompleteJS或copy:autoCompleteCSS任务,应该就能正常执行,不会再出现路径类型错误的警告了。
内容的提问来源于stack exchange,提问作者MSRS
相关产品推荐
相关产品推荐

