Gradle构建Spring项目Webpack失败问题求助
解决Windows下Gradle集成React+Webpack的构建失败问题
看起来你踩了Windows系统下Gradle Node插件执行跨平台脚本的坑——报错里的Shell语法(basedir=$(dirname...))被Node当成JavaScript解析,自然就炸了。这是因为Windows上node_modules/.bin/webpack是个Shell脚本,而Node.exe会直接把它当作JS文件执行,完全不识别Shell语法。下面给你几个靠谱的解决方案:
方案1:通过npm脚本间接调用Webpack(推荐,跨平台友好)
你的package.json里已经定义了webpack脚本,直接让Gradle调用npm run webpack就可以了,npm会自动处理Windows和类Unix系统的可执行文件差异。修改Build.Gradle里的webpack任务:
task webpack(type: NodeTask, dependsOn: 'npmInstall') { script = project.file('node_modules/npm/bin/npm-cli.js') args = ['run', 'webpack'] }
这样Node会执行npm的CLI,由npm去调用对应的webpack.cmd(Windows)或者webpack Shell脚本(Linux/macOS),完美规避跨平台问题。
方案2:直接指定Windows专属的webpack.cmd(仅限Windows开发)
如果你只在Windows环境下开发,也可以直接指定脚本为webpack.cmd:
task webpack(type: NodeTask, dependsOn: 'npmInstall') { script = project.file('node_modules/.bin/webpack.cmd') }
但这个方法在Linux或macOS上会失效,所以优先选方案1。
额外检查点
- 确认你的项目根目录下存在
webpack.config.js,因为package.json里的脚本指定了--config ./webpack.config.js,如果这个文件缺失或有语法错误,也会导致执行失败。 - 可以运行
./gradlew webpack --info查看更详细的执行日志,确认Gradle到底执行了什么命令,方便排查问题。
内容的提问来源于stack exchange,提问作者KMann
相关产品推荐
相关产品推荐

