前几天,在工作中使用webpack打包命令时,报了如下的错误,这个问题也困扰了我两天时间:
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
^^^^^^^
SyntaxError:missing ) after argument list
查找了很多论坛,也找到许多解决方法,但大多数都没有解决问题。报这个错误的原因主要是在写webpack命令时,由于在window操作系统中,不支持shell脚本语句所导致。在mac系统的电脑中,由于本身支持shell脚本,故不会报这个错误。也亲自用同事的mac电脑打包,果真没有报这个错误。
虽说这个错误是由于操作系统的不支持shell脚本语句导致的,那么在windows中该如何修改这个命令,使得打包命令正常运行呢。转换一下思路,webpack底层本身就是node.js。
那么,为什么不可以将shell命令改为node.js支持的语句呢?于是想到修改原先的打包命令即./node_modules/.bin/webpack 为 ./node_modules/webpack/bin/webpack。
第一种打包命令即./node_modules/.bin/webpack ,可以看到.bin目录下均为.cmd的shell命令;
而第二种打包命令即 ./node_modules/webpack/bin/webpack,最后一个webpack实际上是一个js文件,当然支持node了,这也体现了js语言的灵活性和无所不能。
如果你用的mac的操作系统,这两种命令都可以生效。但如果是windows操作系统,不好意思,目前好像这个是最快速而有效的解决方案了。