@xiaonoodles/meetfun-i18n 1.2.17 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,280 +1,280 @@
1
- # 故障排除指南
2
-
3
- ## Vue2 项目报错:`export 'createI18n' was not found in 'vue-i18n'`
4
-
5
- ### 问题描述
6
-
7
- 在 Vue2 项目中使用 `meetfun-i18n/vue2` 时,遇到以下错误:
8
-
9
- ```
10
- ERROR in ./node_modules/meetfun-i18n/dist/index.esm.js
11
- export 'createI18n' (imported as 'createI18n') was not found in 'vue-i18n'
12
- ```
13
-
14
- ### 原因
15
-
16
- 这个错误说明打包工具(Webpack/uni-app)加载了 Vue3 版本的代码(`dist/index.esm.js`),而不是 Vue2 版本(`dist/vue2/index.esm.js`)。
17
-
18
- Vue3 的 vue-i18n@9 使用 `createI18n`,而 Vue2 的 vue-i18n@8 使用 `new VueI18n()`,这导致了不兼容。
19
-
20
- ### 解决方案
21
-
22
- #### 方案 1:使用正确的引入路径(推荐)
23
-
24
- 确保您的引入语句是:
25
-
26
- ```javascript
27
- // ✅ 正确 - Vue2 项目
28
- import { createMeetFunI18n } from 'meetfun-i18n/vue2'
29
-
30
- // ❌ 错误 - 这会加载 Vue3 版本
31
- import { createMeetFunI18n } from 'meetfun-i18n'
32
- ```
33
-
34
- #### 方案 2:检查 package.json 中的版本
35
-
36
- 确保安装了正确版本的依赖:
37
-
38
- ```bash
39
- # 检查当前版本
40
- pnpm list vue vue-i18n
41
-
42
- # Vue2 项目应该是:
43
- # vue: ^2.7.x
44
- # vue-i18n: ^8.x.x
45
-
46
- # 如果版本不对,重新安装
47
- pnpm remove vue vue-i18n
48
- pnpm add vue@^2.7.0 vue-i18n@^8.0.0
49
- ```
50
-
51
- #### 方案 3:清除缓存并重新安装
52
-
53
- ```bash
54
- # 清除 node_modules
55
- rm -rf node_modules
56
-
57
- # 清除锁定文件(根据你的包管理器选择)
58
- rm package-lock.json # npm
59
- rm yarn.lock # yarn
60
- rm pnpm-lock.yaml # pnpm
61
-
62
- # 重新安装
63
- pnpm install
64
- ```
65
-
66
- #### 方案 4:Webpack 配置别名(适用于 uni-app)
67
-
68
- 如果上述方法都不行,可以在 `vue.config.js` 或 Webpack 配置中添加别名:
69
-
70
- ```javascript
71
- // vue.config.js
72
- module.exports = {
73
- configureWebpack: {
74
- resolve: {
75
- alias: {
76
- 'meetfun-i18n/vue2': 'meetfun-i18n/vue2.js'
77
- }
78
- }
79
- }
80
- }
81
- ```
82
-
83
- ### 验证是否正确加载
84
-
85
- 创建一个测试文件:
86
-
87
- ```javascript
88
- // test.js
89
- import { createMeetFunI18n } from 'meetfun-i18n/vue2'
90
- console.log('导入成功:', typeof createMeetFunI18n)
91
- ```
92
-
93
- 如果输出 `导入成功: function`,说明加载正确。
94
-
95
- ---
96
-
97
- ## 类型定义找不到
98
-
99
- ### 问题描述
100
-
101
- TypeScript 项目报错:找不到模块 `meetfun-i18n/vue2` 的类型定义。
102
-
103
- ### 解决方案
104
-
105
- #### 方案 1:确保安装了最新版本
106
-
107
- ```bash
108
- pnpm add meetfun-i18n@latest
109
- ```
110
-
111
- #### 方案 2:在 tsconfig.json 中添加类型引用
112
-
113
- ```json
114
- {
115
- "compilerOptions": {
116
- "types": ["meetfun-i18n/vue2"]
117
- }
118
- }
119
- ```
120
-
121
- #### 方案 3:手动指定类型
122
-
123
- 在文件顶部添加:
124
-
125
- ```typescript
126
- /// <reference types="meetfun-i18n/vue2" />
127
- import { createMeetFunI18n } from 'meetfun-i18n/vue2'
128
- ```
129
-
130
- ---
131
-
132
- ## uni-app 编译报错
133
-
134
- ### 问题描述
135
-
136
- 在 uni-app 项目中编译时报错。
137
-
138
- ### 解决方案
139
-
140
- #### 方案 1:确保 HBuilderX 或 CLI 版本最新
141
-
142
- ```bash
143
- # 如果使用 CLI
144
- npm update -g @vue/cli-service-global
145
- ```
146
-
147
- #### 方案 2:检查 manifest.json 配置
148
-
149
- 确保配置了正确的 Vue 版本:
150
-
151
- ```json
152
- {
153
- "vueVersion": "2" // Vue2 项目
154
- }
155
- ```
156
-
157
- #### 方案 3:清除编译缓存
158
-
159
- 在 HBuilderX 中:
160
- 1. 运行 -> 清除缓存
161
- 2. 重新编译
162
-
163
- 使用 CLI:
164
- ```bash
165
- rm -rf unpackage
166
- npm run dev:mp-weixin # 或其他平台
167
- ```
168
-
169
- ---
170
-
171
- ## peerDependencies 警告
172
-
173
- ### 问题描述
174
-
175
- 安装时出现 peerDependencies 警告。
176
-
177
- ### 解决方案
178
-
179
- 这是正常的,因为包支持 Vue2 和 Vue3。确保您安装了正确版本的依赖即可:
180
-
181
- **Vue2 项目:**
182
- ```bash
183
- pnpm add vue@^2.7.0 vue-i18n@^8.0.0
184
- ```
185
-
186
- **Vue3 项目:**
187
- ```bash
188
- pnpm add vue@^3.0.0 vue-i18n@^9.0.0
189
- ```
190
-
191
- ---
192
-
193
- ## 运行时报错:`uni is not defined`
194
-
195
- ### 问题描述
196
-
197
- 在非 uni-app 项目中使用报错。
198
-
199
- ### 解决方案
200
-
201
- 本库依赖 uni-app 的 `uni` 全局对象,仅适用于 uni-app 项目。
202
-
203
- 如果您需要在普通 Vue 项目中使用,可以:
204
-
205
- 1. 使用原生的 vue-i18n
206
- 2. 或者 mock `uni` 对象(不推荐)
207
-
208
- ---
209
-
210
- ## 构建产物体积过大
211
-
212
- ### 问题描述
213
-
214
- 打包后体积较大。
215
-
216
- ### 解决方案
217
-
218
- #### 方案 1:启用 Tree Shaking
219
-
220
- 确保使用 ES Module 导入:
221
-
222
- ```javascript
223
- // ✅ 好 - 支持 Tree Shaking
224
- import { createMeetFunI18n } from 'meetfun-i18n/vue2'
225
-
226
- // ❌ 不好
227
- const { createMeetFunI18n } = require('meetfun-i18n/vue2')
228
- ```
229
-
230
- #### 方案 2:只导入需要的功能
231
-
232
- ```javascript
233
- import { createMeetFunI18n, LANGUAGE_OPTIONS_CONFIGURATION } from 'meetfun-i18n/vue2'
234
- // 而不是:import * as i18n from 'meetfun-i18n/vue2'
235
- ```
236
-
237
- ---
238
-
239
- ## 其他常见问题
240
-
241
- ### Q: 可以在 Vue2 和 Vue3 混合项目中使用吗?
242
-
243
- A: 不建议。一个项目应该只使用一个版本的 Vue 和对应的 meetfun-i18n 版本。
244
-
245
- ### Q: 升级到新版本后出现问题怎么办?
246
-
247
- A:
248
- 1. 查看 [CHANGELOG.md](./CHANGELOG.md) 了解破坏性更改
249
- 2. 清除缓存和 node_modules
250
- 3. 重新安装依赖
251
-
252
- ### Q: 如何确认使用的是哪个版本?
253
-
254
- A: 在代码中添加调试信息:
255
-
256
- ```javascript
257
- import { createMeetFunI18n } from 'meetfun-i18n/vue2'
258
- console.log('meetfun-i18n version:', createMeetFunI18n.toString())
259
- ```
260
-
261
- ---
262
-
263
- ## 获取帮助
264
-
265
- 如果以上方法都无法解决问题,请:
266
-
267
- 1. 检查 [GitHub Issues](https://github.com/meetfun/meetfun-i18n/issues)
268
- 2. 提供以下信息创建新 Issue:
269
- - Vue 版本
270
- - vue-i18n 版本
271
- - meetfun-i18n 版本
272
- - 完整的错误信息
273
- - 最小复现代码
274
-
275
- ## 相关文档
276
-
277
- - [README.md](./README.md) - 完整使用文档
278
- - [VUE2_USAGE.md](./VUE2_USAGE.md) - Vue2 使用指南
279
- - [MIGRATION_GUIDE.md](./MIGRATION_GUIDE.md) - 迁移指南
280
-
1
+ # 故障排除指南
2
+
3
+ ## Vue2 项目报错:`export 'createI18n' was not found in 'vue-i18n'`
4
+
5
+ ### 问题描述
6
+
7
+ 在 Vue2 项目中使用 `meetfun-i18n/vue2` 时,遇到以下错误:
8
+
9
+ ```
10
+ ERROR in ./node_modules/meetfun-i18n/dist/index.esm.js
11
+ export 'createI18n' (imported as 'createI18n') was not found in 'vue-i18n'
12
+ ```
13
+
14
+ ### 原因
15
+
16
+ 这个错误说明打包工具(Webpack/uni-app)加载了 Vue3 版本的代码(`dist/index.esm.js`),而不是 Vue2 版本(`dist/vue2/index.esm.js`)。
17
+
18
+ Vue3 的 vue-i18n@9 使用 `createI18n`,而 Vue2 的 vue-i18n@8 使用 `new VueI18n()`,这导致了不兼容。
19
+
20
+ ### 解决方案
21
+
22
+ #### 方案 1:使用正确的引入路径(推荐)
23
+
24
+ 确保您的引入语句是:
25
+
26
+ ```javascript
27
+ // ✅ 正确 - Vue2 项目
28
+ import { createMeetFunI18n } from 'meetfun-i18n/vue2'
29
+
30
+ // ❌ 错误 - 这会加载 Vue3 版本
31
+ import { createMeetFunI18n } from 'meetfun-i18n'
32
+ ```
33
+
34
+ #### 方案 2:检查 package.json 中的版本
35
+
36
+ 确保安装了正确版本的依赖:
37
+
38
+ ```bash
39
+ # 检查当前版本
40
+ pnpm list vue vue-i18n
41
+
42
+ # Vue2 项目应该是:
43
+ # vue: ^2.7.x
44
+ # vue-i18n: ^8.x.x
45
+
46
+ # 如果版本不对,重新安装
47
+ pnpm remove vue vue-i18n
48
+ pnpm add vue@^2.7.0 vue-i18n@^8.0.0
49
+ ```
50
+
51
+ #### 方案 3:清除缓存并重新安装
52
+
53
+ ```bash
54
+ # 清除 node_modules
55
+ rm -rf node_modules
56
+
57
+ # 清除锁定文件(根据你的包管理器选择)
58
+ rm package-lock.json # npm
59
+ rm yarn.lock # yarn
60
+ rm pnpm-lock.yaml # pnpm
61
+
62
+ # 重新安装
63
+ pnpm install
64
+ ```
65
+
66
+ #### 方案 4:Webpack 配置别名(适用于 uni-app)
67
+
68
+ 如果上述方法都不行,可以在 `vue.config.js` 或 Webpack 配置中添加别名:
69
+
70
+ ```javascript
71
+ // vue.config.js
72
+ module.exports = {
73
+ configureWebpack: {
74
+ resolve: {
75
+ alias: {
76
+ 'meetfun-i18n/vue2': 'meetfun-i18n/vue2.js'
77
+ }
78
+ }
79
+ }
80
+ }
81
+ ```
82
+
83
+ ### 验证是否正确加载
84
+
85
+ 创建一个测试文件:
86
+
87
+ ```javascript
88
+ // test.js
89
+ import { createMeetFunI18n } from 'meetfun-i18n/vue2'
90
+ console.log('导入成功:', typeof createMeetFunI18n)
91
+ ```
92
+
93
+ 如果输出 `导入成功: function`,说明加载正确。
94
+
95
+ ---
96
+
97
+ ## 类型定义找不到
98
+
99
+ ### 问题描述
100
+
101
+ TypeScript 项目报错:找不到模块 `meetfun-i18n/vue2` 的类型定义。
102
+
103
+ ### 解决方案
104
+
105
+ #### 方案 1:确保安装了最新版本
106
+
107
+ ```bash
108
+ pnpm add meetfun-i18n@latest
109
+ ```
110
+
111
+ #### 方案 2:在 tsconfig.json 中添加类型引用
112
+
113
+ ```json
114
+ {
115
+ "compilerOptions": {
116
+ "types": ["meetfun-i18n/vue2"]
117
+ }
118
+ }
119
+ ```
120
+
121
+ #### 方案 3:手动指定类型
122
+
123
+ 在文件顶部添加:
124
+
125
+ ```typescript
126
+ /// <reference types="meetfun-i18n/vue2" />
127
+ import { createMeetFunI18n } from 'meetfun-i18n/vue2'
128
+ ```
129
+
130
+ ---
131
+
132
+ ## uni-app 编译报错
133
+
134
+ ### 问题描述
135
+
136
+ 在 uni-app 项目中编译时报错。
137
+
138
+ ### 解决方案
139
+
140
+ #### 方案 1:确保 HBuilderX 或 CLI 版本最新
141
+
142
+ ```bash
143
+ # 如果使用 CLI
144
+ npm update -g @vue/cli-service-global
145
+ ```
146
+
147
+ #### 方案 2:检查 manifest.json 配置
148
+
149
+ 确保配置了正确的 Vue 版本:
150
+
151
+ ```json
152
+ {
153
+ "vueVersion": "2" // Vue2 项目
154
+ }
155
+ ```
156
+
157
+ #### 方案 3:清除编译缓存
158
+
159
+ 在 HBuilderX 中:
160
+ 1. 运行 -> 清除缓存
161
+ 2. 重新编译
162
+
163
+ 使用 CLI:
164
+ ```bash
165
+ rm -rf unpackage
166
+ npm run dev:mp-weixin # 或其他平台
167
+ ```
168
+
169
+ ---
170
+
171
+ ## peerDependencies 警告
172
+
173
+ ### 问题描述
174
+
175
+ 安装时出现 peerDependencies 警告。
176
+
177
+ ### 解决方案
178
+
179
+ 这是正常的,因为包支持 Vue2 和 Vue3。确保您安装了正确版本的依赖即可:
180
+
181
+ **Vue2 项目:**
182
+ ```bash
183
+ pnpm add vue@^2.7.0 vue-i18n@^8.0.0
184
+ ```
185
+
186
+ **Vue3 项目:**
187
+ ```bash
188
+ pnpm add vue@^3.0.0 vue-i18n@^9.0.0
189
+ ```
190
+
191
+ ---
192
+
193
+ ## 运行时报错:`uni is not defined`
194
+
195
+ ### 问题描述
196
+
197
+ 在非 uni-app 项目中使用报错。
198
+
199
+ ### 解决方案
200
+
201
+ 本库依赖 uni-app 的 `uni` 全局对象,仅适用于 uni-app 项目。
202
+
203
+ 如果您需要在普通 Vue 项目中使用,可以:
204
+
205
+ 1. 使用原生的 vue-i18n
206
+ 2. 或者 mock `uni` 对象(不推荐)
207
+
208
+ ---
209
+
210
+ ## 构建产物体积过大
211
+
212
+ ### 问题描述
213
+
214
+ 打包后体积较大。
215
+
216
+ ### 解决方案
217
+
218
+ #### 方案 1:启用 Tree Shaking
219
+
220
+ 确保使用 ES Module 导入:
221
+
222
+ ```javascript
223
+ // ✅ 好 - 支持 Tree Shaking
224
+ import { createMeetFunI18n } from 'meetfun-i18n/vue2'
225
+
226
+ // ❌ 不好
227
+ const { createMeetFunI18n } = require('meetfun-i18n/vue2')
228
+ ```
229
+
230
+ #### 方案 2:只导入需要的功能
231
+
232
+ ```javascript
233
+ import { createMeetFunI18n, LANGUAGE_OPTIONS_CONFIGURATION } from 'meetfun-i18n/vue2'
234
+ // 而不是:import * as i18n from 'meetfun-i18n/vue2'
235
+ ```
236
+
237
+ ---
238
+
239
+ ## 其他常见问题
240
+
241
+ ### Q: 可以在 Vue2 和 Vue3 混合项目中使用吗?
242
+
243
+ A: 不建议。一个项目应该只使用一个版本的 Vue 和对应的 meetfun-i18n 版本。
244
+
245
+ ### Q: 升级到新版本后出现问题怎么办?
246
+
247
+ A:
248
+ 1. 查看 [CHANGELOG.md](./CHANGELOG.md) 了解破坏性更改
249
+ 2. 清除缓存和 node_modules
250
+ 3. 重新安装依赖
251
+
252
+ ### Q: 如何确认使用的是哪个版本?
253
+
254
+ A: 在代码中添加调试信息:
255
+
256
+ ```javascript
257
+ import { createMeetFunI18n } from 'meetfun-i18n/vue2'
258
+ console.log('meetfun-i18n version:', createMeetFunI18n.toString())
259
+ ```
260
+
261
+ ---
262
+
263
+ ## 获取帮助
264
+
265
+ 如果以上方法都无法解决问题,请:
266
+
267
+ 1. 检查 [GitHub Issues](https://github.com/meetfun/meetfun-i18n/issues)
268
+ 2. 提供以下信息创建新 Issue:
269
+ - Vue 版本
270
+ - vue-i18n 版本
271
+ - meetfun-i18n 版本
272
+ - 完整的错误信息
273
+ - 最小复现代码
274
+
275
+ ## 相关文档
276
+
277
+ - [README.md](./README.md) - 完整使用文档
278
+ - [VUE2_USAGE.md](./VUE2_USAGE.md) - Vue2 使用指南
279
+ - [MIGRATION_GUIDE.md](./MIGRATION_GUIDE.md) - 迁移指南
280
+