@xiaonoodles/meetfun-i18n 1.2.16 → 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.
package/VERIFY_FIX.md CHANGED
@@ -1,272 +1,272 @@
1
- # 修复验证指南
2
-
3
- ## 📋 问题总结
4
-
5
- **错误信息:**
6
- ```
7
- ERROR in ./node_modules/meetfun-i18n/dist/index.esm.js 1029:20-30
8
- export 'createI18n' (imported as 'createI18n') was not found in 'vue-i18n'
9
- ```
10
-
11
- **根本原因:**
12
- Webpack 5 在处理 `import from 'meetfun-i18n/vue2'` 时,没有正确解析到 Vue2 版本的代码,而是加载了 Vue3 版本(`dist/index.esm.js`)。Vue3 版本使用 `createI18n`(vue-i18n@9),但您的项目安装的是 vue-i18n@8(只有 `default` 导出),因此报错。
13
-
14
- ## ✅ 修复方案
15
-
16
- 创建了物理的 `vue2/` 目录,确保 Webpack 能够正确解析子路径导入。
17
-
18
- ## 🔍 验证步骤
19
-
20
- ### 步骤 1: 重新发布包(维护者)
21
-
22
- ```bash
23
- # 确保已构建
24
- pnpm build
25
-
26
- # 发布新版本 1.2.1
27
- npm publish
28
- ```
29
-
30
- ### 步骤 2: 在您的项目中更新(用户)
31
-
32
- ```bash
33
- # 方式 1: 更新到最新版本
34
- pnpm update meetfun-i18n
35
-
36
- # 方式 2: 指定版本更新
37
- pnpm add meetfun-i18n@1.2.1
38
-
39
- # 方式 3: 强制重新安装
40
- pnpm remove meetfun-i18n
41
- pnpm add meetfun-i18n@latest
42
- ```
43
-
44
- ### 步骤 3: 验证文件结构
45
-
46
- 更新后,检查 `node_modules/meetfun-i18n/` 是否包含:
47
-
48
- ```bash
49
- ls node_modules/meetfun-i18n/vue2/
50
-
51
- # 应该看到以下文件:
52
- # ✅ package.json
53
- # ✅ index.js
54
- # ✅ index.mjs
55
- # ✅ index.d.ts
56
- ```
57
-
58
- 查看 `vue2/package.json` 内容:
59
-
60
- ```bash
61
- cat node_modules/meetfun-i18n/vue2/package.json
62
-
63
- # 应该显示:
64
- {
65
- "main": "../dist/vue2/index.js",
66
- "module": "../dist/vue2/index.esm.js",
67
- "types": "../dist/vue2/index.d.ts"
68
- }
69
- ```
70
-
71
- ### 步骤 4: 清除缓存
72
-
73
- ```bash
74
- # 清除 node_modules(确保干净安装)
75
- rm -rf node_modules
76
- rm pnpm-lock.yaml
77
-
78
- # 重新安装
79
- pnpm install
80
-
81
- # 清除构建缓存
82
- rm -rf unpackage # uni-app 项目
83
- rm -rf dist # 如果有
84
- rm -rf .cache # Webpack 缓存
85
- ```
86
-
87
- ### 步骤 5: 验证代码
88
-
89
- 在您的 `src/locales/index.js` 中确认引入语句:
90
-
91
- ```javascript
92
- // ✅ 正确的引入方式
93
- import { createMeetFunI18n } from 'meetfun-i18n/vue2'
94
-
95
- // ❌ 错误 - 这会加载 Vue3 版本
96
- // import { createMeetFunI18n } from 'meetfun-i18n'
97
- ```
98
-
99
- ### 步骤 6: 添加调试代码
100
-
101
- 临时添加以下代码来验证加载的版本:
102
-
103
- ```javascript
104
- import { createMeetFunI18n } from 'meetfun-i18n/vue2'
105
-
106
- console.log('✅ 导入成功')
107
- console.log('createMeetFunI18n:', typeof createMeetFunI18n)
108
-
109
- // 创建一个测试实例
110
- const testInstance = createMeetFunI18n(
111
- { 'zh-Hans': {} },
112
- {
113
- queryLangDictHotData: async () => ({ data: {} }),
114
- queryLangDictColdData: async () => ({ data: {} })
115
- }
116
- )
117
-
118
- const i18n = testInstance.getI18n()
119
- console.log('i18n 实例类型:', i18n.constructor.name)
120
- console.log('是否有 t 方法:', typeof i18n.t)
121
-
122
- // 期望输出:
123
- // ✅ 导入成功
124
- // createMeetFunI18n: function
125
- // i18n 实例类型: VueI18n
126
- // 是否有 t 方法: function
127
- ```
128
-
129
- ### 步骤 7: 重新编译运行
130
-
131
- ```bash
132
- # 重新运行开发服务器
133
- npm run dev
134
-
135
- # 或针对特定平台
136
- npm run dev:mp-weixin
137
- npm run dev:h5
138
- ```
139
-
140
- ## 🎯 预期结果
141
-
142
- ### 成功标志
143
-
144
- 1. ✅ 不再出现 `export 'createI18n' was not found` 错误
145
- 2. ✅ 控制台输出显示 `i18n 实例类型: VueI18n`
146
- 3. ✅ 项目正常编译和运行
147
- 4. ✅ 翻译功能正常工作
148
-
149
- ### 如果还是失败
150
-
151
- 请检查以下内容:
152
-
153
- #### 1. 确认 vue-i18n 版本
154
-
155
- ```bash
156
- pnpm list vue-i18n
157
-
158
- # Vue2 项目应该显示:
159
- # vue-i18n 8.x.x
160
- ```
161
-
162
- 如果不是 8.x.x,重新安装:
163
-
164
- ```bash
165
- pnpm remove vue-i18n
166
- pnpm add vue-i18n@^8.0.0
167
- ```
168
-
169
- #### 2. 检查引入路径
170
-
171
- 确保所有文件都使用 `/vue2`:
172
-
173
- ```bash
174
- # 搜索项目中的所有引入
175
- grep -r "from 'meetfun-i18n'" src/
176
-
177
- # 应该都是:
178
- # from 'meetfun-i18n/vue2'
179
- ```
180
-
181
- #### 3. 检查 Webpack 配置
182
-
183
- 如果项目有自定义的 `webpack.config.js` 或 `vue.config.js`,确保没有配置冲突:
184
-
185
- ```javascript
186
- // vue.config.js
187
- module.exports = {
188
- configureWebpack: {
189
- resolve: {
190
- // 确保这里没有关于 meetfun-i18n 的别名配置
191
- }
192
- }
193
- }
194
- ```
195
-
196
- #### 4. 尝试直接路径
197
-
198
- 作为临时测试,可以尝试直接引入:
199
-
200
- ```javascript
201
- // 测试:直接引入 dist/vue2
202
- import { createMeetFunI18n } from 'meetfun-i18n/dist/vue2/index.esm.js'
203
- ```
204
-
205
- 如果这样能工作,说明是路径解析问题,请提供您的 Webpack 配置。
206
-
207
- ## 📊 对比表
208
-
209
- | 检查项 | Vue3 版本(错误) | Vue2 版本(正确) |
210
- |--------|------------------|-------------------|
211
- | **引入路径** | `meetfun-i18n` | `meetfun-i18n/vue2` |
212
- | **加载文件** | `dist/index.esm.js` | `dist/vue2/index.esm.js` |
213
- | **i18n 创建** | `createI18n()` | `new VueI18n()` |
214
- | **实例类型** | `Composer` | `VueI18n` |
215
- | **vue-i18n 版本** | 9.x | 8.x |
216
-
217
- ## 🆘 获取帮助
218
-
219
- 如果以上步骤都完成了还是不行,请提供以下信息:
220
-
221
- 1. **包版本信息:**
222
- ```bash
223
- pnpm list meetfun-i18n vue vue-i18n
224
- ```
225
-
226
- 2. **文件是否存在:**
227
- ```bash
228
- ls -la node_modules/meetfun-i18n/vue2/
229
- ```
230
-
231
- 3. **引入代码:**
232
- ```javascript
233
- // 粘贴您的 src/locales/index.js 的引入部分
234
- ```
235
-
236
- 4. **完整错误信息:**
237
- ```
238
- // 粘贴完整的错误堆栈
239
- ```
240
-
241
- 5. **项目环境:**
242
- - uni-app 版本
243
- - 使用的打包工具(HBuilderX / CLI)
244
- - Node.js 版本
245
-
246
- ## 📚 相关文档
247
-
248
- - [FIX_WEBPACK_RESOLUTION.md](./FIX_WEBPACK_RESOLUTION.md) - 技术细节
249
- - [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) - 故障排除
250
- - [VUE2_USAGE.md](./VUE2_USAGE.md) - Vue2 使用指南
251
-
252
- ## ✨ 成功案例
253
-
254
- 更新到 1.2.1 后,以下场景都应该正常工作:
255
-
256
- ```javascript
257
- // ✅ ES Module 导入
258
- import { createMeetFunI18n } from 'meetfun-i18n/vue2'
259
-
260
- // ✅ CommonJS 导入
261
- const { createMeetFunI18n } = require('meetfun-i18n/vue2')
262
-
263
- // ✅ TypeScript 类型
264
- import type { I18nConfig, ApiConfig } from 'meetfun-i18n/vue2'
265
-
266
- // ✅ 动态导入
267
- const module = await import('meetfun-i18n/vue2')
268
-
269
- // ✅ 默认导出
270
- import createMeetFunI18n from 'meetfun-i18n/vue2'
271
- ```
272
-
1
+ # 修复验证指南
2
+
3
+ ## 📋 问题总结
4
+
5
+ **错误信息:**
6
+ ```
7
+ ERROR in ./node_modules/meetfun-i18n/dist/index.esm.js 1029:20-30
8
+ export 'createI18n' (imported as 'createI18n') was not found in 'vue-i18n'
9
+ ```
10
+
11
+ **根本原因:**
12
+ Webpack 5 在处理 `import from 'meetfun-i18n/vue2'` 时,没有正确解析到 Vue2 版本的代码,而是加载了 Vue3 版本(`dist/index.esm.js`)。Vue3 版本使用 `createI18n`(vue-i18n@9),但您的项目安装的是 vue-i18n@8(只有 `default` 导出),因此报错。
13
+
14
+ ## ✅ 修复方案
15
+
16
+ 创建了物理的 `vue2/` 目录,确保 Webpack 能够正确解析子路径导入。
17
+
18
+ ## 🔍 验证步骤
19
+
20
+ ### 步骤 1: 重新发布包(维护者)
21
+
22
+ ```bash
23
+ # 确保已构建
24
+ pnpm build
25
+
26
+ # 发布新版本 1.2.1
27
+ npm publish
28
+ ```
29
+
30
+ ### 步骤 2: 在您的项目中更新(用户)
31
+
32
+ ```bash
33
+ # 方式 1: 更新到最新版本
34
+ pnpm update meetfun-i18n
35
+
36
+ # 方式 2: 指定版本更新
37
+ pnpm add meetfun-i18n@1.2.1
38
+
39
+ # 方式 3: 强制重新安装
40
+ pnpm remove meetfun-i18n
41
+ pnpm add meetfun-i18n@latest
42
+ ```
43
+
44
+ ### 步骤 3: 验证文件结构
45
+
46
+ 更新后,检查 `node_modules/meetfun-i18n/` 是否包含:
47
+
48
+ ```bash
49
+ ls node_modules/meetfun-i18n/vue2/
50
+
51
+ # 应该看到以下文件:
52
+ # ✅ package.json
53
+ # ✅ index.js
54
+ # ✅ index.mjs
55
+ # ✅ index.d.ts
56
+ ```
57
+
58
+ 查看 `vue2/package.json` 内容:
59
+
60
+ ```bash
61
+ cat node_modules/meetfun-i18n/vue2/package.json
62
+
63
+ # 应该显示:
64
+ {
65
+ "main": "../dist/vue2/index.js",
66
+ "module": "../dist/vue2/index.esm.js",
67
+ "types": "../dist/vue2/index.d.ts"
68
+ }
69
+ ```
70
+
71
+ ### 步骤 4: 清除缓存
72
+
73
+ ```bash
74
+ # 清除 node_modules(确保干净安装)
75
+ rm -rf node_modules
76
+ rm pnpm-lock.yaml
77
+
78
+ # 重新安装
79
+ pnpm install
80
+
81
+ # 清除构建缓存
82
+ rm -rf unpackage # uni-app 项目
83
+ rm -rf dist # 如果有
84
+ rm -rf .cache # Webpack 缓存
85
+ ```
86
+
87
+ ### 步骤 5: 验证代码
88
+
89
+ 在您的 `src/locales/index.js` 中确认引入语句:
90
+
91
+ ```javascript
92
+ // ✅ 正确的引入方式
93
+ import { createMeetFunI18n } from 'meetfun-i18n/vue2'
94
+
95
+ // ❌ 错误 - 这会加载 Vue3 版本
96
+ // import { createMeetFunI18n } from 'meetfun-i18n'
97
+ ```
98
+
99
+ ### 步骤 6: 添加调试代码
100
+
101
+ 临时添加以下代码来验证加载的版本:
102
+
103
+ ```javascript
104
+ import { createMeetFunI18n } from 'meetfun-i18n/vue2'
105
+
106
+ console.log('✅ 导入成功')
107
+ console.log('createMeetFunI18n:', typeof createMeetFunI18n)
108
+
109
+ // 创建一个测试实例
110
+ const testInstance = createMeetFunI18n(
111
+ { 'zh-Hans': {} },
112
+ {
113
+ queryLangDictHotData: async () => ({ data: {} }),
114
+ queryLangDictColdData: async () => ({ data: {} })
115
+ }
116
+ )
117
+
118
+ const i18n = testInstance.getI18n()
119
+ console.log('i18n 实例类型:', i18n.constructor.name)
120
+ console.log('是否有 t 方法:', typeof i18n.t)
121
+
122
+ // 期望输出:
123
+ // ✅ 导入成功
124
+ // createMeetFunI18n: function
125
+ // i18n 实例类型: VueI18n
126
+ // 是否有 t 方法: function
127
+ ```
128
+
129
+ ### 步骤 7: 重新编译运行
130
+
131
+ ```bash
132
+ # 重新运行开发服务器
133
+ npm run dev
134
+
135
+ # 或针对特定平台
136
+ npm run dev:mp-weixin
137
+ npm run dev:h5
138
+ ```
139
+
140
+ ## 🎯 预期结果
141
+
142
+ ### 成功标志
143
+
144
+ 1. ✅ 不再出现 `export 'createI18n' was not found` 错误
145
+ 2. ✅ 控制台输出显示 `i18n 实例类型: VueI18n`
146
+ 3. ✅ 项目正常编译和运行
147
+ 4. ✅ 翻译功能正常工作
148
+
149
+ ### 如果还是失败
150
+
151
+ 请检查以下内容:
152
+
153
+ #### 1. 确认 vue-i18n 版本
154
+
155
+ ```bash
156
+ pnpm list vue-i18n
157
+
158
+ # Vue2 项目应该显示:
159
+ # vue-i18n 8.x.x
160
+ ```
161
+
162
+ 如果不是 8.x.x,重新安装:
163
+
164
+ ```bash
165
+ pnpm remove vue-i18n
166
+ pnpm add vue-i18n@^8.0.0
167
+ ```
168
+
169
+ #### 2. 检查引入路径
170
+
171
+ 确保所有文件都使用 `/vue2`:
172
+
173
+ ```bash
174
+ # 搜索项目中的所有引入
175
+ grep -r "from 'meetfun-i18n'" src/
176
+
177
+ # 应该都是:
178
+ # from 'meetfun-i18n/vue2'
179
+ ```
180
+
181
+ #### 3. 检查 Webpack 配置
182
+
183
+ 如果项目有自定义的 `webpack.config.js` 或 `vue.config.js`,确保没有配置冲突:
184
+
185
+ ```javascript
186
+ // vue.config.js
187
+ module.exports = {
188
+ configureWebpack: {
189
+ resolve: {
190
+ // 确保这里没有关于 meetfun-i18n 的别名配置
191
+ }
192
+ }
193
+ }
194
+ ```
195
+
196
+ #### 4. 尝试直接路径
197
+
198
+ 作为临时测试,可以尝试直接引入:
199
+
200
+ ```javascript
201
+ // 测试:直接引入 dist/vue2
202
+ import { createMeetFunI18n } from 'meetfun-i18n/dist/vue2/index.esm.js'
203
+ ```
204
+
205
+ 如果这样能工作,说明是路径解析问题,请提供您的 Webpack 配置。
206
+
207
+ ## 📊 对比表
208
+
209
+ | 检查项 | Vue3 版本(错误) | Vue2 版本(正确) |
210
+ |--------|------------------|-------------------|
211
+ | **引入路径** | `meetfun-i18n` | `meetfun-i18n/vue2` |
212
+ | **加载文件** | `dist/index.esm.js` | `dist/vue2/index.esm.js` |
213
+ | **i18n 创建** | `createI18n()` | `new VueI18n()` |
214
+ | **实例类型** | `Composer` | `VueI18n` |
215
+ | **vue-i18n 版本** | 9.x | 8.x |
216
+
217
+ ## 🆘 获取帮助
218
+
219
+ 如果以上步骤都完成了还是不行,请提供以下信息:
220
+
221
+ 1. **包版本信息:**
222
+ ```bash
223
+ pnpm list meetfun-i18n vue vue-i18n
224
+ ```
225
+
226
+ 2. **文件是否存在:**
227
+ ```bash
228
+ ls -la node_modules/meetfun-i18n/vue2/
229
+ ```
230
+
231
+ 3. **引入代码:**
232
+ ```javascript
233
+ // 粘贴您的 src/locales/index.js 的引入部分
234
+ ```
235
+
236
+ 4. **完整错误信息:**
237
+ ```
238
+ // 粘贴完整的错误堆栈
239
+ ```
240
+
241
+ 5. **项目环境:**
242
+ - uni-app 版本
243
+ - 使用的打包工具(HBuilderX / CLI)
244
+ - Node.js 版本
245
+
246
+ ## 📚 相关文档
247
+
248
+ - [FIX_WEBPACK_RESOLUTION.md](./FIX_WEBPACK_RESOLUTION.md) - 技术细节
249
+ - [TROUBLESHOOTING.md](./TROUBLESHOOTING.md) - 故障排除
250
+ - [VUE2_USAGE.md](./VUE2_USAGE.md) - Vue2 使用指南
251
+
252
+ ## ✨ 成功案例
253
+
254
+ 更新到 1.2.1 后,以下场景都应该正常工作:
255
+
256
+ ```javascript
257
+ // ✅ ES Module 导入
258
+ import { createMeetFunI18n } from 'meetfun-i18n/vue2'
259
+
260
+ // ✅ CommonJS 导入
261
+ const { createMeetFunI18n } = require('meetfun-i18n/vue2')
262
+
263
+ // ✅ TypeScript 类型
264
+ import type { I18nConfig, ApiConfig } from 'meetfun-i18n/vue2'
265
+
266
+ // ✅ 动态导入
267
+ const module = await import('meetfun-i18n/vue2')
268
+
269
+ // ✅ 默认导出
270
+ import createMeetFunI18n from 'meetfun-i18n/vue2'
271
+ ```
272
+