下面是在weex中遇到的部分报错问题,特此记录下来,如果有用,拿走不谢。也欢迎start。
报错信息如下:
Users/qinliang.ql/Desktop/yk-message-center/node_modules/[email protected]@webpack/lib/TemplatedPathPlugin.js:50 if(!allowEmpty) throw new Error("Path variable " + match + " not implemented in this context: " + input); ^ Error: Path variable [name] not implemented in this context: /Users/qinliang.ql/.weex_tmp/[name].weex.js at /Users/qinliang.ql/Desktop/yk-message-center/node_modules/[email protected]@webpack/lib/TemplatedPathPlugin.js:50:26
解决方法:重新安装weex-toolkit:
npm uninstall weex-toolkit -g
# 必须uninstall一下
npm install weex-toolkit -g
安装后的版本为:
- weex-debugger : v1.0.0-rc.32 - weex-builder : v0.3.17 - weex-previewer : v1.4.8
如果还是没有解决,可以查看你的node_modules目录下的webpack版本是否和package.json中的一致,即webpack版本加载的问题。我发现package.json中依赖的webpack版本为:
"webpack": "1.14.0"
但是我node_modules下安装了1.15.0和3.x的版本,我把后面两个版本删除以后,一切恢复正常了!
报错信息如下:
file:///usr/local/lib/node_modules/weex-toolkit/node_modules/[email protected]@babel-loader/lib/index.js when use command weex compile case error /node_modules/weex-ui/index.js Module build failed: Error: Cannot find module 'babel-core'
其实上面的报错信息很明显,说usr/local/lib/node_modules目录下的weex-toolkit的node_modules下不存在babel-core,有点绕(但是是全局安装的命令),解决方案如下:
cd /usr/local/lib/node_modules/weex-toolkit
# 最新的weex脚手架weex-toolkit竟然会出现这个问题,有点失望。
# 应该是weex-toolkit把babel-core设置为devDependencies依赖了导致未安装
# https://github.com/weexteam/weex-toolkit/blob/master/package.json#L28
tnpm i babel-core -S
这样当你运行weex preview ./index.vue
的时候就不会出现问题了。
报错信息如下:
weex preview ./index.vue 09:48:55 : Bundling source... 09:48:56 : weex JS bundle saved at /Users/qinliang.ql/.weex_tmp 09:48:57 : Wed Mar 14 2018 09:48:57 GMT+0800 (CST)WebSocket is listening on port 8082 09:48:57 : Wed Mar 14 2018 09:48:57 GMT+0800 (CST)http is listening on port 8081 09:48:57 : http://30.97.92.166:8081/?hot-reload_controller&page=index.js&loader=xhr&wsport=8082&type=vue 09:48:57 : Error: listen EADDRINUSE 0.0.0.0:8082 at Object._errnoException (util.js:1022:11) at _exceptionWithHostPort (util.js:1044:20) at Server.setupListenHandle [as _listen2] (net.js:1351:14) at listenInCluster (net.js:1392:12) at doListen (net.js:1501:7) at _combinedTickCallback (internal/process/next_tick.js:141:11) at process._tickCallback (internal/process/next_tick.js:180:9) 09:48:57 : The server has been setted up.
我马上执行了下面的命令:
lsof -i:8082
# 我发现8082根本就没有被占用,如果占用可以使用kill -9 (pid的值)
因为以前以尝试开发过cli命令,所以我自然想到指定--port,抱着试一试的心态:
weex preview ./index.vue --port 8088
此时发现一切正常。
报错信息如下:
events.js:183 throw er; // Unhandled 'error' event ^ Error: spawn ./node_modules/weex-previewer/bin/weex-previewer ENOENT at _errnoException (util.js:1022:11) at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19) at onErrorNT (internal/child_process.js:372:16) at _combinedTickCallback (internal/process/next_tick.js:138:11) at process._tickCallback (internal/process/next_tick.js:180:9)
遇到这个问题我也是醉了,我直接运行了下面的命令:
pwd
#获取当前文档,然后我把pwd和./node_modules/weex-previewer/bin/weex-previewer路径
# 结合了起来,在浏览器中打开它,发现确实打不开,也报错说找不到文件。但是如果加上.js后缀
# 又能够在浏览器中正常打开了
所以我就就想到在VSCode中搜索spawn(我知道到spawn惹的祸),最后在项目下找到如下的代码:
util.spawn('node ./node_modules/weex-devtool/bin/weex-devtool src/' + pageName + '/index.vue -M' + debugPorts);
util.spawn('./node_modules/weex-previewer/bin/weex-previewer src/' + pageName + '/index.vue --np' + previewPorts);
很显然是第二句代码惹的祸,所以我直接加上后缀.js:
util.spawn('node ./node_modules/weex-devtool/bin/weex-devtool src/' + pageName + '/index.vue -M' + debugPorts);
util.spawn('./node_modules/weex-previewer/bin/weex-previewer.js src/' + pageName + '/index.vue --np' + previewPorts);
此时一切正常!关于代码中如何避免这个错误可以点击这里。
报错信息如下:
Error: Cannot find module 'xtoolkit' at Function.Module._resolveFilename (module.js:538:15) at Function.Module._load (module.js:468:25) at Module.require (module.js:587:17) at require (internal/module.js:11:18) at Object. (/usr/local/lib/node_modules/weex-toolkit/bin/weex.js:4:18)
我删除了weex-toolkit然后重新安装了下