跟着教程边学边打代码,建立项目,在不同的电脑,创建webpack项目时候,分别遇到不一样的坑。
电脑 A :
环境:Mac
node -v: v0.12.4
npm -v: 2.10.1
按着教程写完index.js,sub.js,安装好各种包,然后在项目根目录运行webpack后,马上遇到一个坑
指令webpack安装的时候明明是全局的 “npm install -g webpack”,但是仍然报出了这样的错误 根据路径,ls查看webpack目录下是存在NodeTemplatePlugin这个插件的,查找了一下原因,应该是没有设置环境变量导致的。具体在这里
按照别人的方法:
1.直接在终端下,设置环境变量export NODE_PATH="/usr/local/lib/node_modules" 后在项目根目录运行webpack,仍然报错。在项目根目录下输入指令 echo $NODE_PATH 输出结果为空。
2.在项目根目录下设置环境变量export NODE_PATH="/usr/local/lib/node_modules" 后在项目根目录运行webpack,成功!在项目根目录下输入指令 echo $NODE_PATH 能输出结果。但是当新开一个终端进入项目,并在项目根目录下运行webpack指令,仍然报错,输入指令 echo $NODE_PATH 输出结果为空。说明之前设置的环境变量只是一个临时的值! 以上两种方法都不可以很好的解决问题。
继续寻找解决方案: 在~/.bash_profile中添加如下设置: export NODE_PATH="/usr/local/lib/node_modules" 保存退出。
运行webpack,成功!输入指令 echo $NODE_PATH 能输出结果!
ps:在终端下 vim ~/.bash_profile i #进入编辑
输入语句 export NODE_PATH="/usr/local/lib/node_modules"
esc :wq
source ~/.bash_profile #让~/.bash_profile马上生效!
最终成功运行项目
晚上用另外一台电脑,重新建立webpack项目,出现了各种状况
环境:mac
node -v: v5.7.0
npm -v: v3.6.0
跟这教程,建立项目,安装webpack,html-webpack-plugin 两个包后,运行webpack, 报错。按照上面的解决方法,解决问题。好!继续!问题陆续的出现了...
安装webpack-dev-server,报错报错...尝试忽略它,继续往前走,配置webpack-dev-server,在项目根目录下输入npm start。最后...还是走不下去,各种报错!
它说我版本太低太低!!!!! 各种翻阅资料,有人说把webpack版本装到2.0.1beta解决问题;有人说因为node到了5.x这些包装的时候出现各种状况,需要降低版本,还有各种各样的解释……
就这样,我把webpack装了好多遍,即使换到2.0.1beta依旧没有解决问题;那好吧,我降低node版本咯~ 竟然竟然在我换版本的时候node挂了,又出现了另外一个状况。在这种重重复复装了node,npm后,又卸载,重新再装node,npm后,又卸载…… 搞了好久,最后成功了。
总结一下:
1.webpack在全局安装, webpack-dev-server死活不兼容,根本跑不起来(说版本太低了,但是这怎么解决依旧没有找到解决方案,有待解决)
结论:webpack还是局部安装吧!
2.webpack在局部安装,假设package.json 里面的name为:webpack,那很好又报错了,如图:
将package.json 的name属性修改为:webpackTest, 通过!
结论:package.json的name属性不能跟webpack命令一样
3.解决问题2后,输入命令webpack,提示webpack command is not found,如图:
基于这情况,在package.json下,配置一下命令:
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "webpack"
},
在终端下,执行npm start,开始编译,生成build文件夹
继续配置webpack-dev-server,package.json入面的配置就不是像教程那样写了,应该为这样
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "webpack",
"dev": "webpack-dev-server --hot --inline"
}
在终端下,执行npm run dev,通过!!!! 在浏览器里输入localhost:8080, HelloWorld出现了!!!!!!
终于项目又一次跑起来了...
心真累!