- 小程序开发问题
- Q:小程序文档地址
- Q:小程序
@dcloudio/uni-cli-i18n
- 1. 问题详情
- 2.解决方案
- Q:小程序打包发布太慢
- 1. 问题详情
- 2. 解决方案
- Q:小程序在浏览器报跨域问题
- 1. 问题详情
- 2. 解决方案
- Q:小程序网络请求问题
- 1. 问题详情
- 2. 解决方案
- Q:小程序运行不起来
transpileDependencies
没配置 - 1. 问题详情
- 2. 解决方案
- Q:小程序引入组件库原生运行导致白屏
- 1. 问题详情
- 2. 解决方案
- Q:小程序开发
iOS
端日期显示异常 - 1. 问题详情
- 2. 解决方案
- Q:修改工程名导致
Docker
部署失败 - 1. 问题详情
- 2. 解决方案
- Q:小程序解析原生参数问题
- 1. 问题原因
- 2. 解决方法
- Q:套件发布沙箱后小程序未更新问题
- 1. 问题原因
- 2. 解决方法
小程序开发问题
Q:小程序文档地址
文档名称 | 描述 | 地址 |
---|---|---|
开发须知 | 模板介绍、相关组件库地址等 | 地址 |
小程序开发到上架 | 创建、开发、调试、发布、测试、上架 | 地址 |
原生交互 | 小程序与原生交互 | 地址 |
微信小程序发布 | 微信小程序发布流程 | 地址 |
小程序模板升级2.0 | 模板上级2.0,兼容微应用多开、标准化组件库 | 地址 |
小程序开发注意事项 | 加载速度慢、移动端兼容、小程序测试 | 地址 |
小程序调试 | Debug 调试 |
地址 |
后台编译 uni-app 工程 | 小程序后端打包相关配置 | 地址 |
小程序多开规范 | 小程序打开小程序规范 | 地址 |
Q:小程序 @dcloudio/uni-cli-i18n
1. 问题详情
Error: Cannot find module '@dcloudio/uni-cli-i18n'
2.解决方案
yarn add -D @dcloudio/uni-cli-i18n @dcloudio/uni-i18n
Q:小程序打包发布太慢
1. 问题详情
发布打包过程超过十分钟时,是因为npm
初始化未走淘宝镜像
2. 解决方案
需要在
.npmrc
中加入淘宝npm
仓库镜像地址
根目录新建.npmrc
文件,并填充一下数据。
sass_binary_site=https://npm.taobao.org/mirrors/node-sass/
phantomjs_cdnurl=https://npm.taobao.org/mirrors/phantomjs/
electron_mirror=https://npm.taobao.org/mirrors/electron/
registry=https://registry.npm.taobao.org
Q:小程序在浏览器报跨域问题
1. 问题详情
出现此问题,是因为我们配置了动态获取地址的方法,如果非原生APP
中使用,将会出现代理问题
2. 解决方案
需要在manifest.json
引入以下代码
/api
:不要随意更改,否则库里面找不到代理地址target
:代理地址,可更具自己的环境进行配置
"h5" : {
"router" : {
"base" : "/demo-k-mp/"
},
"devServer" : {
"https" : false,
"proxy" : {
"/api" : {
"target" : "http://pai.flyrise.cn",
"changeOrigin" : true,
"secure" : false,
"pathRewrite" : {
"^/api" : "/"
}
}
}
}
}
Q:小程序网络请求问题
1. 问题详情
网络请求出现大批量404
报错
2. 解决方案
遵循模板2.0
网络标准即可,可参考 地址 下的 “3.1 网络请求”
- 注意引入组件库中的网络工具类;
- 填充
URL
时,不要写入完整地址,防止换了环境用不了。
import {http} from '@flyriselink/pai-mp-ui/common/service.js'
//获取用户详情-管理员判断
export const getUserDetail = () => {
return http.get("/console-api/user/v1/me", {})
}
Q:小程序运行不起来transpileDependencies
没配置
1. 问题详情
错误原因:使用 cnpm
、yarn
初始化项目
15:46:01.330 如手机上HBuilder调试基座未启动,请手动启动...
15:46:02.782 reportJSException >>>> exception function:createInstanceContext, exception:white screen cause create instanceContext failed,check js stack ->Uncaught Error: Module parse failed: Unexpected token (2:86)
15:46:02.814 You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
15:46:02.848 | // 看到此报错,是因为没有配置vue.config.js的【transpileDependencies】,详见:https://www.uviewui.com/components/npmSetting.html#_5-cli模式额外配置
15:46:02.876 > const pleaseSetTranspileDependencies = {}, babelTest = pleaseSetTranspileDependencies?.test
2. 解决方案
- 删除
node_modules
文件夹;
//快捷删除命令,先 cmd 到项目主目录,然后运行此命令即可
rmdir /s/q node_modules
- 删除
package-lock.json
文件; - 使用
npm i
初始化项目。
Q:小程序引入组件库原生运行导致白屏
1. 问题详情
错误原因:原生中无法使用document
和window
,所以chrome
运行正常,但是在原生运行白屏,可能就是引入的组件库不支持原生导致的。
- 有赞组件库:
Vant
不支持原生,可以使用uni-app
插件市场中的组件替换地址 ; - 饿了么库:
element-ui
不支持原生;
2. 解决方案
Q:小程序开发iOS
端日期显示异常
1. 问题详情
iOS13
不支持new Date("2022-03-30 13:59:00")
日期格式
2. 解决方案
改成new Date("2022/03/30 13:59:00")
字符串格式
更新
@flyriselink/pai-mp-ui
仓库到1.0.18
以上即可;//使用方式 this.$p.time.parseTime('2021-06-18T13:56:30.000+0000')
手动在
timeUtil
的parseTime
添加一段代码;// 时间格式化 export const parseTime = (time, pattern) => { ... if (typeof time === "object") { date = time } else { ... if (typeof time === "number" && time.toString().length === 10) { time = time * 1000 } //在之前的日期格式化中插入 START if (time && typeof time === "string" && time.length > 19 && time.indexOf('-') != -1 && time.indexOf('T') != -1) { let data = time.substr(0, 19) time = new Date(data.replace(/T/g, ' ').replace(/-/g, '/')).getTime() + 8 * 60 * 60 * 1000 } //在之前的日期格式化中插入 END date = new Date(time) } const formatObj = { ... } const timeStr = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => { ... }) return timeStr }
Q:修改工程名导致Docker
部署失败
1. 问题详情
主要是修改工程名不彻底,部分文件中的配置项未修改导致的。
2. 解决方案
以工程名pai-uni-basic
为例,详情建议参考最新小程序模板工程。
注意:注意把CSS
中的 less
转换成 scss
manifest.json
//工程名`pai-uni-basic` "h5": { "router": { "base": "/uni-basic/" } }
default.conf
#工程名`pai-uni-basic` server { ... location / { root /usr/share/nginx/html; index index.html index.htm; try_files $uri $uri/=403 /uni-basic/index.html; } ... }
Deployment.yaml
#工程名`pai-uni-basic` metadata: name: pai-uni-basic labels: app: pai-uni-basic namespace: test spec: replicas: 1 selector: matchLabels: app: pai-uni-basic template: metadata: labels: app: pai-uni-basic spec: containers: - name: pai-uni-basic image: fedemo.cn:8082/pi-dev/pai-uni-basic:latest
Dockerfile
#工程名`pai-uni-basic` FROM node:14-alpine as builder RUN mkdir -p /tmp/pai-uni-basic COPY package.json /tmp/pai-uni-basic/package.json COPY .npmrc /tmp/pai-uni-smart-approval/.npmrc RUN cd /tmp/pai-uni-basic && npm install && mkdir -p /build/pai-uni-basic && cp -a /tmp/pai-uni-basic/node_modules /build/pai-uni-basic/ WORKDIR /build/pai-uni-basic ... RUN mkdir -p /usr/share/nginx/html/uni-basic ... COPY --from=builder /build/pai-uni-basic/dist/build/h5/ /usr/share/nginx/html/uni-basic/ COPY default.conf /etc/nginx/conf.d/default.conf WORKDIR /usr/share/nginx/html/uni-basic/
Service.yaml
#工程名`pai-uni-basic` metadata: name: pai-uni-basic namespace: test labels: app: pai-uni-basic ... spec: ... selector: app: pai-uni-basic
Q:小程序解析原生参数问题
1. 问题原因
由于原生传递参数问题导致,JS
需要做一下兼容
2. 解决方法
//uni.onNativeEventReceive(function(event, data)
const result = JSON.stringify(data, null, '\t')
const json = JSON.parse(result)
const userData = Array.isArray(json.items) ? json.items[0] : json.items.values[0]
Q:套件发布沙箱后小程序未更新问题
1. 问题原因
由于pages.json
有问题导致的
2. 解决方法
修改
pages.json
中的问题,参考地址 ;使用命令重新提交
pages.json
文件。#工程 > src 目录下 pai deploy microapp #根据当前目录的pages.json发布
文档更新时间: 2022-04-22 14:04 作者:陈冕