运行Grunt的bower_concat提示missing ) after argument list如何解决
错误原因
你遇到的SyntaxError: missing ) after argument list是核心错误,属于Gruntfile.js的JavaScript语法解析错误,后续的Task "default" not found是次生错误:因为语法错误导致文件解析中断,代码没有执行到grunt.registerTask('default', ...)的注册逻辑,Grunt无法识别到default任务。
语法错误具体有2处:
concat任务的配置结构错误:你先定义了空的css: {}对象,随后将css的src、dest属性直接写在concat的根层级下,大括号配对错误,导致整个配置对象结构混乱。bower_concat任务的dest、cssDest属性语法错误:这两个属性的值应为字符串路径,你额外套了一层大括号,形成了没有键的非法对象字面量,触发语法报错。
排查方法
- 用IDE自带的JavaScript语法检查功能打开Gruntfile.js,编辑器会直接在语法错误的位置标红提示。
- 逐块核对任务配置的对象结构,确保每个子配置的大括号、逗号、键值对格式符合JS对象语法规范。
- 也可以直接用node命令执行Gruntfile.js,会输出更精确的错误行号:
node Gruntfile.js
修复方案
1. 修复concat配置
将css的src、dest放到css属性的对象内部,删除多余的空css: {}结构,修改后代码如下:
concat: { js: { src: ['source/app/app.js', 'source/assets/js/*.js'], dest: '<%= dirs.buildPath %>/sales/assets/js/main.js' }, css: { src: [ 'source/assets/css/fonts.css', 'source/assets/css/fuelux.css', 'source/assets/css/style.css', 'source/assets/css/growl.css' ], dest: '<%= dirs.buildPath %>/sales/assets/css/main.css' } },
2. 修复bower_concat配置
删除dest、cssDest值外层多余的大括号,修改后代码如下:
bower_concat: { all: { dest: '<%= dirs.buildPath %>/sales/assets/js/_lib.js', cssDest: '<%= dirs.buildPath %>/sales/assets/css/_lib.css', // 剩余mainFiles、dependencies等配置保持不变即可 } },
修改完成后重新执行Grunt任务即可正常运行。
内容的提问来源于stack exchange,提问作者Venkat Prasad
相关产品推荐
相关产品推荐

