Skip to content

Latest commit

 

History

History
125 lines (114 loc) · 5.51 KB

error.md

File metadata and controls

125 lines (114 loc) · 5.51 KB

前言

下面是在weex中遇到的部分报错问题,特此记录下来,如果有用,拿走不谢。也欢迎start。

1.weex版本不匹配导致的问题

报错信息如下:

Users/qinliang.ql/Desktop/yk-message-center/node_modules/_webpack@1.15.0@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/_webpack@1.15.0@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的版本,我把后面两个版本删除以后,一切恢复正常了!

2.运行weex compile的时候babel-core不存在

报错信息如下:

file:///usr/local/lib/node_modules/weex-toolkit/node_modules/_babel-loader@7.1.4@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的时候就不会出现问题了。

3.weex preview命令的时候提示端口被占用

报错信息如下:

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

此时发现一切正常。

4.nodejs中的ENOENT错误

报错信息如下:

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);

此时一切正常!关于代码中如何避免这个错误可以点击这里

5.weex preview报错

报错信息如下:

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然后重新安装了下