目录
一、问题
1.从git上拉下来代码,并且npm install安装了代码需要的依赖后,运行代码报错:
error in ./node_modules/_mqtt@4.3.7@mqtt/lib/client.js
2.完整错误如下:
大概意思是下面 那一段代码需要合适的 loader来解析。可是仔细一看会发现报错的文件是 下载的依赖文件 node_modules中的,一般依赖中的代码我们是不需要更改的(别人开发的组件或插件直接使用即可)。猜测极有可能是版本不匹配,某些变量或用法不兼容。
ERROR Failed to compile with 1 errors 下午5:57:57
error in ./node_modules/_mqtt@4.3.7@mqtt/lib/client.js
Module parse failed: Unexpected token (118:38)
You may need an appropriate loader to handle this file type.
| if (alias) {
| packet.topic = ''
| packet.properties = { ...(packet.properties), topicAlias: alias }
| debug('applyTopicAlias :: auto assign(use) topic: %s - alias: %d', topic, alias)
| } else {
@ ./node_modules/_mqtt@4.3.7@mqtt/lib/connect/index.js 3:19-39
@ ./src/store/modules/websocket.js
@ ./src/store/modules \.js$
@ ./src/store/index.js
@ ./src/main.js
@ multi ./node_modules/_webpack-dev-server@2.11.5@webpack-dev-server/client?http://localhost:8080 webpack/hot/dev-server ./src/main.js
二、解决方法
1.降低mqtt的版本
如上面错误中所示:我下载的依赖中的 mqtt的版本是 4.3.7
1)进入下载依赖的官网 npm
2)搜索mqtt,并且切换到 versions 标签下面。
如图1所示, 2.18.9版本才是稳定、安全的; 而4.3.7是最新版本。cnpm或npm install时一般会下载最新版本的。
注:一般下载软件或插件等,都要选择稳定版的,降低因不兼容带来的问题。
3)ctrl+c退出当前的错误,指定版本号 为2.18.9重新下载 mqtt
cnpm install mqtt@2.18.9
4) 下载完成后,重新运行程序,不再报错,正常启动了
三、总结
1.遇到错误不要惊慌,盲目百度,要学会自己分析解决问题。其实我没有解决问题之前也是在百度,结果发现没有人写类似的问题,才放弃搜索,开始自己思考问题。经过仔细思考后,发现上述解决办法。
2.遇到 Module parse failed:xxxx(即node_modules文件夹中的东西报错),一般是由于版本过高或过低,可以去官网查看相应模块,下载稳定的模块即可解决!
/*
希望对你有帮助!
如有错误,欢迎指正,谢谢!
*/