zhangdaren / miniprogram-to-uniapp

轻松将各种小程序转换为uni-app项目
Other
1.68k stars 278 forks source link

小程序转uni-app后的些许问题。 #6

Closed q215171650 closed 5 years ago

q215171650 commented 5 years ago

转换前 wx:else 转换后 v-else=""


转换前 wx:elif="{{mode === 2}}" 转换后 v-else-if="{{mode === 2}}"


转换前

<image />
<view>......</view>

转换后

<image>
  <view>......</view>
</image>

转换前 wx:key="{{index}}" 转换后 :key="index" :wx:key="index"


异常:

(node:6036) UnhandledPromiseRejectionWarning: TypeError: Property left of AssignmentExpression expected node to be of a type ["LVal"] but instead got "ThisExpression"
    at Object.validate (C:\Users\mayn\AppData\Roaming\npm\node_modules\miniprogram-to-uniapp\node_modules\@babel\types\lib\definitions\utils.js:128:13)
    at Object.validate (C:\Users\mayn\AppData\Roaming\npm\node_modules\miniprogram-to-uniapp\node_modules\@babel\types\lib\validators\validate.js:17:9)
    at NodePath._replaceWith (C:\Users\mayn\AppData\Roaming\npm\node_modules\miniprogram-to-uniapp\node_modules\@babel\traverse\lib\path\replacement.js:194:9)
    at NodePath.replaceWith (C:\Users\mayn\AppData\Roaming\npm\node_modules\miniprogram-to-uniapp\node_modules\@babel\traverse\lib\path\replacement.js:178:8)
    at MemberExpression (C:\Users\mayn\AppData\Roaming\npm\node_modules\miniprogram-to-uniapp\src\wx2uni\jsHandle.js:179:11)
    at NodePath._call (C:\Users\mayn\AppData\Roaming\npm\node_modules\miniprogram-to-uniapp\node_modules\@babel\traverse\lib\path\context.js:53:20)
    at NodePath.call (C:\Users\mayn\AppData\Roaming\npm\node_modules\miniprogram-to-uniapp\node_modules\@babel\traverse\lib\path\context.js:40:17)
    at NodePath.visit (C:\Users\mayn\AppData\Roaming\npm\node_modules\miniprogram-to-uniapp\node_modules\@babel\traverse\lib\path\context.js:88:12)
    at TraversalContext.visitQueue (C:\Users\mayn\AppData\Roaming\npm\node_modules\miniprogram-to-uniapp\node_modules\@babel\traverse\lib\context.js:118:16)    at TraversalContext.visitSingle (C:\Users\mayn\AppData\Roaming\npm\node_modules\miniprogram-to-uniapp\node_modules\@babel\traverse\lib\context.js:90:19)(node:6036) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)
(node:6036) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
zxzhgk commented 5 years ago

补充一下:

  1. 当页面存在for循环嵌套时,key值存在冲突; 转换前:

    <view  wx:for="{{drugList}}" wx:key="{{index}}">
             <view  wx:for="{{drugList.item}}" wx:key="{{index}}">
    
              </view>
    </view>

    转换后:

    <view  v-for="{{drugList}}" :key="{{key}}">
             <view  v-for="{{drugList.item}}"  :key="{{key}}">
    
              </view>
    </view>
  2. 自定义组件转换后的引入路径存在问题,例如: 转换前
    "usingComponents": {
    "groupMsg": "../../../../component/groupMsg/groupMsg"
    }

转换后:

import groupMsg from "..\\..\\..\\component\\groupMsg\\groupMsg";
  1. 当Template 下存在对个view时转换应该符合vue标准

转换前:

<view>...</view>
<view>...</view>
<template>
<view>...</view>
<view>...</view>
</template>

Vue template下只能有一个根标签

zhangdaren commented 5 years ago

好的,谢谢大佬提供意见~~

zhangdaren commented 5 years ago

v1.0.13将全部解决这些问题。

q215171650 commented 5 years ago

v1.0.14版本转换后的问题 1.组件引入转换后相对路径有问题 转换前: "info-swiper": "./components/InfoSwiper/index" 转换后: import infoSwiper from "components/InfoSwiper/index";

2.绑定事件的转换 转换前: <view class="view-container" bindtap="{{isShow?'showType':''}}"> 转换后: <view class="view-container" @tap="{{isShow?'showType':''}}">

3.样式文引入绝对根路径时的转换,根路径转换后建议加着~@ 转换前: @import '/assets/styles/index'; 转换后: @import '/assets/styles/index.css';

4.wxss 中 font-face 转换前: url('//at.alicdn.com/t/font_760316_vn5n6rab0m.svg?t=1552648122101#iconfont') format('svg'); 转换后: url("../../static/at.alicdn.com/t/font_760316_vn5n6rab0m.svg?t=1552648122101#iconfont') format(.svg");

5.v-for转换的问题 转换前: <block wx:for="{{subCateList}}" wx:key="{{item.id}}"> 转换后: <block v-for="(item, item.id) in subCateList" :key="item.id">

v1.0.13将全部解决这些问题。

zhangdaren commented 5 years ago

3.样式文引入绝对根路径时的转换,根路径转换后建议加着~@

加~@是啥意思? 貌似uni-app没有定义路径的功能哇,不过这个下版本已经解决了。

zhangdaren commented 5 years ago

v1.0.15 上面问题都已经解决。

q215171650 commented 5 years ago

3.样式文引入绝对根路径时的转换,根路径转换后建议加着~@

加~@是啥意思? 貌似uni-app没有定义路径的功能哇,不过这个下版本已经解决了。

类似于vue路径别名,uni-app上不知道有没有这个默认设置。

zhangdaren commented 5 years ago

昨天测试了一下,没成功,可能是我操作方式不对。而且~这种应该是webpack配置的哇。


不管你是逐渐繁华,还是即将枯萎,此时此刻才是你的人生!

------------------ 原始邮件 ------------------ 发件人: "hoho"notifications@github.com; 发送时间: 2019年8月1日(星期四) 下午3:13 收件人: "zhangdaren/miniprogram-to-uniap"miniprogram-to-uniapp@noreply.github.com; 抄送: "张鹏"375890534@qq.com; "Comment"comment@noreply.github.com; 主题: Re: [zhangdaren/miniprogram-to-uniapp] 小程序转uni-app后的些许问题。 (#6)

3.样式文引入绝对根路径时的转换,根路径转换后建议加着~@

加~@是啥意思? 貌似uni-app没有定义路径的功能哇,不过这个下版本已经解决了。

类似于vue路径别名,uni-app上不知道有没有这个默认设置。

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

q215171650 commented 5 years ago

昨天测试了一下,没成功,可能是我操作方式不对。而且~这种应该是webpack配置的哇。 ------------------ 不管你是逐渐繁华,还是即将枯萎,此时此刻才是你的人生! ------------------ 原始邮件 ------------------ 发件人: "hoho"notifications@github.com; 发送时间: 2019年8月1日(星期四) 下午3:13 收件人: "zhangdaren/miniprogram-to-uniap"miniprogram-to-uniapp@noreply.github.com; 抄送: "张鹏"375890534@qq.com; "Comment"comment@noreply.github.com; 主题: Re: [zhangdaren/miniprogram-to-uniapp] 小程序转uni-app后的些许问题。 (#6) 3.样式文引入绝对根路径时的转换,根路径转换后建议加着~@ 加~@是啥意思? 貌似uni-app没有定义路径的功能哇,不过这个下版本已经解决了。 类似于vue路径别名,uni-app上不知道有没有这个默认设置。 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

嗯,是webpack的配置,我的意思其实是像这种根路径的import,能不直接转换成uni-app里面src所设置的别名,如果uni-app生成的工程配置对src没有做别名设置,那直接指到src也可以。因为最终转换完的工程,还是要手动放到uni-app工程的src下。

zhangdaren commented 5 years ago

嗯,是webpack的配置,我的意思其实是像这种根路径的import,能不直接转换成uni-app里面src所设置的别名,如果uni-app生成的工程配置对src没有做别名设置,那直接指到src也可以。因为最终转换完的工程,还是要手动放到uni-app工程的src下。

现在已经修改为相对项目根目录的相对路径,是否可以满足需求?

q215171650 commented 5 years ago

嗯,是webpack的配置,我的意思其实是像这种根路径的import,能不直接转换成uni-app里面src所设置的别名,如果uni-app生成的工程配置对src没有做别名设置,那直接指到src也可以。因为最终转换完的工程,还是要手动放到uni-app工程的src下。

现在已经修改为相对项目根目录的相对路径,是否可以满足需求?

这样好像也不行,如果只改成项目根目录,那么转换后的代码放到uni-app工程里的src下,根目录对应的就是src目录了,依然是 Failed to find '/assets/styles/index',可以给这样的根路径前面加个src,这样感觉能解决问题,手动加有点多,不知道你的转换器可不可处理这个问题。

还有就是import 的相对路径组件转换后的路径应该带着./,要不会去node_modules里面去找了

zhangdaren commented 5 years ago

是否有需求要自动加入src前缀?因为我看现在小程序和uniapp默认创建的项目是没有src目录的。

import确实有这个问题,已经改好待其他bug修复后,一起更新。


不管你是逐渐繁华,还是即将枯萎,此时此刻才是你的人生!

------------------ 原始邮件 ------------------ 发件人: "hoho"notifications@github.com; 发送时间: 2019年8月6日(星期二) 中午11:31 收件人: "zhangdaren/miniprogram-to-uniap"miniprogram-to-uniapp@noreply.github.com; 抄送: "张鹏"375890534@qq.com; "Comment"comment@noreply.github.com; 主题: Re: [zhangdaren/miniprogram-to-uniapp] 小程序转uni-app后的些许问题。 (#6)

嗯,是webpack的配置,我的意思其实是像这种根路径的import,能不直接转换成uni-app里面src所设置的别名,如果uni-app生成的工程配置对src没有做别名设置,那直接指到src也可以。因为最终转换完的工程,还是要手动放到uni-app工程的src下。

现在已经修改为相对项目根目录的相对路径,是否可以满足需求?

这样好像也不行,如果只改成项目根目录,那么转换后的代码放到uni-app工程里的src下,根目录对应的就是src目录了,依然是 Failed to find '/assets/styles/index',可以给这样的根路径前面加个src,这样感觉能解决问题,手动加有点多,不知道你的转换器可不可处理这个问题。

还有就是import 的相对路径组件转换后的路径应该带着./,要不会去node_modules里面去找了

— You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

q215171650 commented 5 years ago

image 噢,对,我是通过vue-cli创建的项目有src

是否有需求要自动加入src前缀?因为我看现在小程序和uniapp默认创建的项目是没有src目录的。 import确实有这个问题,已经改好待其他bug修复后,一起更新。 ------------------ 不管你是逐渐繁华,还是即将枯萎,此时此刻才是你的人生! ------------------ 原始邮件 ------------------ 发件人: "hoho"notifications@github.com; 发送时间: 2019年8月6日(星期二) 中午11:31 收件人: "zhangdaren/miniprogram-to-uniap"miniprogram-to-uniapp@noreply.github.com; 抄送: "张鹏"375890534@qq.com; "Comment"comment@noreply.github.com; 主题: Re: [zhangdaren/miniprogram-to-uniapp] 小程序转uni-app后的些许问题。 (#6) 嗯,是webpack的配置,我的意思其实是像这种根路径的import,能不直接转换成uni-app里面src所设置的别名,如果uni-app生成的工程配置对src没有做别名设置,那直接指到src也可以。因为最终转换完的工程,还是要手动放到uni-app工程的src下。 现在已经修改为相对项目根目录的相对路径,是否可以满足需求? 这样好像也不行,如果只改成项目根目录,那么转换后的代码放到uni-app工程里的src下,根目录对应的就是src目录了,依然是 Failed to find '/assets/styles/index',可以给这样的根路径前面加个src,这样感觉能解决问题,手动加有点多,不知道你的转换器可不可处理这个问题。 还有就是import 的相对路径组件转换后的路径应该带着./,要不会去node_modules里面去找了 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

zhangdaren commented 5 years ago

image 噢,对,我是通过vue-cli创建的项目有src

是否有需求要自动加入src前缀?因为我看现在小程序和uniapp默认创建的项目是没有src目录的。 import确实有这个问题,已经改好待其他bug修复后,一起更新。 ------------------ 不管你是逐渐繁华,还是即将枯萎,此时此刻才是你的人生! ------------------ 原始邮件 ------------------ 发件人: "hoho"notifications@github.com; 发送时间: 2019年8月6日(星期二) 中午11:31 收件人: "zhangdaren/miniprogram-to-uniap"miniprogram-to-uniapp@noreply.github.com; 抄送: "张鹏"375890534@qq.com; "Comment"comment@noreply.github.com; 主题: Re: [zhangdaren/miniprogram-to-uniapp] 小程序转uni-app后的些许问题。 (#6) 嗯,是webpack的配置,我的意思其实是像这种根路径的import,能不直接转换成uni-app里面src所设置的别名,如果uni-app生成的工程配置对src没有做别名设置,那直接指到src也可以。因为最终转换完的工程,还是要手动放到uni-app工程的src下。 现在已经修改为相对项目根目录的相对路径,是否可以满足需求? 这样好像也不行,如果只改成项目根目录,那么转换后的代码放到uni-app工程里的src下,根目录对应的就是src目录了,依然是 Failed to find '/assets/styles/index',可以给这样的根路径前面加个src,这样感觉能解决问题,手动加有点多,不知道你的转换器可不可处理这个问题。 还有就是import 的相对路径组件转换后的路径应该带着./,要不会去node_modules里面去找了 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

那你这个是小程序项目吗?

q215171650 commented 5 years ago

image 噢,对,我是通过vue-cli创建的项目有src

是否有需求要自动加入src前缀?因为我看现在小程序和uniapp默认创建的项目是没有src目录的。 import确实有这个问题,已经改好待其他bug修复后,一起更新。 ------------------ 不管你是逐渐繁华,还是即将枯萎,此时此刻才是你的人生! ------------------ 原始邮件 ------------------ 发件人: "hoho"notifications@github.com; 发送时间: 2019年8月6日(星期二) 中午11:31 收件人: "zhangdaren/miniprogram-to-uniap"miniprogram-to-uniapp@noreply.github.com; 抄送: "张鹏"375890534@qq.com; "Comment"comment@noreply.github.com; 主题: Re: [zhangdaren/miniprogram-to-uniapp] 小程序转uni-app后的些许问题。 (#6) 嗯,是webpack的配置,我的意思其实是像这种根路径的import,能不直接转换成uni-app里面src所设置的别名,如果uni-app生成的工程配置对src没有做别名设置,那直接指到src也可以。因为最终转换完的工程,还是要手动放到uni-app工程的src下。 现在已经修改为相对项目根目录的相对路径,是否可以满足需求? 这样好像也不行,如果只改成项目根目录,那么转换后的代码放到uni-app工程里的src下,根目录对应的就是src目录了,依然是 Failed to find '/assets/styles/index',可以给这样的根路径前面加个src,这样感觉能解决问题,手动加有点多,不知道你的转换器可不可处理这个问题。 还有就是import 的相对路径组件转换后的路径应该带着./,要不会去node_modules里面去找了 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

那你这个是小程序项目吗?

是小程序项目,原生的小程序项目,图是uniapp用vue-cli创建的项目架子,原生的小程序项目通过你的转换器后生成的代码,难道不需要放在uniapp工程下的src里吗

zhangdaren commented 5 years ago

image 噢,对,我是通过vue-cli创建的项目有src

是否有需求要自动加入src前缀?因为我看现在小程序和uniapp默认创建的项目是没有src目录的。 import确实有这个问题,已经改好待其他bug修复后,一起更新。 ------------------ 不管你是逐渐繁华,还是即将枯萎,此时此刻才是你的人生! ------------------ 原始邮件 ------------------ 发件人: "hoho"notifications@github.com; 发送时间: 2019年8月6日(星期二) 中午11:31 收件人: "zhangdaren/miniprogram-to-uniap"miniprogram-to-uniapp@noreply.github.com; 抄送: "张鹏"375890534@qq.com; "Comment"comment@noreply.github.com; 主题: Re: [zhangdaren/miniprogram-to-uniapp] 小程序转uni-app后的些许问题。 (#6) 嗯,是webpack的配置,我的意思其实是像这种根路径的import,能不直接转换成uni-app里面src所设置的别名,如果uni-app生成的工程配置对src没有做别名设置,那直接指到src也可以。因为最终转换完的工程,还是要手动放到uni-app工程的src下。 现在已经修改为相对项目根目录的相对路径,是否可以满足需求? 这样好像也不行,如果只改成项目根目录,那么转换后的代码放到uni-app工程里的src下,根目录对应的就是src目录了,依然是 Failed to find '/assets/styles/index',可以给这样的根路径前面加个src,这样感觉能解决问题,手动加有点多,不知道你的转换器可不可处理这个问题。 还有就是import 的相对路径组件转换后的路径应该带着./,要不会去node_modules里面去找了 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

那你这个是小程序项目吗?

是小程序项目,原生的小程序项目,图是uniapp用vue-cli创建的项目架子,原生的小程序项目通过你的转换器后生成的代码,难道不需要放在uniapp工程下的src里吗

不用啊,工具转换后,直接生成uniapp项目。

zhangdaren commented 5 years ago

昨天测试了一下,没成功,可能是我操作方式不对。而且~这种应该是webpack配置的哇。 ------------------ 不管你是逐渐繁华,还是即将枯萎,此时此刻才是你的人生! ------------------ 原始邮件 ------------------ 发件人: "hoho"notifications@github.com; 发送时间: 2019年8月1日(星期四) 下午3:13 收件人: "zhangdaren/miniprogram-to-uniap"miniprogram-to-uniapp@noreply.github.com; 抄送: "张鹏"375890534@qq.com; "Comment"comment@noreply.github.com; 主题: Re: [zhangdaren/miniprogram-to-uniapp] 小程序转uni-app后的些许问题。 (#6) 3.样式文引入绝对根路径时的转换,根路径转换后建议加着~@ 加~@是啥意思? 貌似uni-app没有定义路径的功能哇,不过这个下版本已经解决了。 类似于vue路径别名,uni-app上不知道有没有这个默认设置。 — You are receiving this because you commented. Reply to this email directly, view it on GitHub, or mute the thread.

嗯,是webpack的配置,我的意思其实是像这种根路径的import,能不直接转换成uni-app里面src所设置的别名,如果uni-app生成的工程配置对src没有做别名设置,那直接指到src也可以。因为最终转换完的工程,还是要手动放到uni-app工程的src下。

大佬,明白你的意思了,这两天看到uniapp还有这种方式 准备生成两种项目形式,一种是hbx生成的,一种是vuecli生成的, 使用vuecli生成的项目,那就可以支持设置别名(自定义,路径情况太多,暂时没有计划替换路径为别名形式),也可以规避资源被删除的情况,而资源也可以不用移动位置,缺点就是需要自己去执行代码安装npm包,

已发布新版v1.0.21,增加了-c,uni-app cli模式,生成vue项目,可以在vue.config.js里增加相对路径别称,目前内置了 @ 和assets两个别名

使用命令: wtu -i "小程序项目路径" -c