uni-app 微信小程序无法动态引入ts
uni-app 微信小程序无法动态引入ts
示例代码:
const locale='en'
const langModule = ((await import(`./lang/${locale}.ts`)) as any) .default as LangModule;
结果:console.log("langModule----", langModule)--->underfined;
操作步骤:
const locale='en'
const langModule = ((await import(`./lang/${locale}.ts`)) as any) .default as LangModule;
预期结果:
是一个 对象数据
实际结果:
underfined
bug描述:
uni-cli搭建vue3+ts 项目-微信小程序无法动态引入ts
const langModule = ((await import(`./lang/${locale}.ts`)) as any) .default as LangModule;
返回的结果是underfine
在web端正常运行,这里的代码是参考vben-admin框架的语言包处理,动态引入对应的语言包文件
| 信息类别 | 信息内容 |
|----------------|------------------|
| 产品分类 | uniapp/小程序/微信 |
| PC开发环境操作系统 | Windows |
| PC开发环境操作系统版本号 | win10 |
| 第三方开发者工具版本号 | 3.4.6.20220420 |
| 基础库版本号 | 2.24.0 |
| 项目创建方式 | CLI |
| CLI版本号 | 最新 |
更多关于uni-app 微信小程序无法动态引入ts的实战教程也可以访问 https://www.itying.com/category-93-b0.html
1 回复
更多关于uni-app 微信小程序无法动态引入ts的实战教程也可以访问 https://www.itying.com/category-93-b0.html
在 Uni-App 中开发微信小程序时,由于微信小程序的运行环境限制,无法直接动态引入 TypeScript 文件(.ts
文件)。微信小程序的模块系统是静态的,不支持在运行时动态加载模块。
解决方案
-
静态引入: 确保所有需要使用的 TypeScript 文件在编译时已经静态引入。例如:
import { someFunction } from './someModule';
-
条件编译: 如果你需要根据不同的条件引入不同的模块,可以使用 Uni-App 的条件编译功能。例如:
#ifdef MP-WEIXIN import { weixinFunction } from './weixinModule'; #endif #ifdef H5 import { h5Function } from './h5Module'; #endif
-
动态加载逻辑: 如果你确实需要动态加载某些逻辑,可以考虑将逻辑封装在函数或类中,然后在运行时根据条件调用不同的函数或实例化不同的类。例如:
let module; if (someCondition) { module = require('./moduleA'); } else { module = require('./moduleB'); } module.someFunction();
注意:
require
在微信小程序中也是静态的,无法动态加载模块。 -
使用全局变量或状态管理: 将需要动态加载的逻辑提前加载并存储在全局变量或状态管理工具(如 Vuex)中,然后在运行时根据需要调用。
import { someFunction } from './someModule'; // 存储在全局变量中 global.someFunction = someFunction; // 在需要的地方调用 global.someFunction();