uni-app 从统一文件夹下的另一个文件导入变量打印undefined

发布于 1周前 作者 nodeper 来自 Uni-App

uni-app 从统一文件夹下的另一个文件导入变量打印undefined

示例代码:

/@/const/index.js
export const baseName = 'TEST_BASE_NAME'
/@/const/storage.js
import { baseName } from './index'  
console.log('baseName--------------', baseName) // 打印undefined

操作步骤:

/@/const/index.js
export const baseName = 'TEST_BASE_NAME'
/@/const/storage.js
import { baseName } from './index'  
console.log('baseName--------------', baseName) // 打印undefined

预期结果:

打印结果为TEST_BASE_NAME

实际结果:

打印undefined

bug描述:

同一文件夹下导入另一文件下的变量,输出undefined

信息类别 信息内容
产品分类 uniapp/小程序/微信
PC开发环境 Mac
操作系统版本 macOS 13
第三方工具 最新版
基础库版本 3.1.5
项目创建方式 CLI
CLI版本 3.0.0-3080720230703001

3 回复

刚试了,可以打印,如图


小程序环境还是不可以

uni-app 中,如果你从一个统一文件夹下的另一个文件导入变量,但在打印时却得到了 undefined,通常是由于以下几种原因之一:

1. 变量未正确导出

确保你在导出的文件中正确地导出了变量。例如:

// utils.js
export const myVar = 'Hello, World!';

如果你使用的是 module.exportsexports,确保它们被正确使用:

// utils.js (CommonJS)
const myVar = 'Hello, World!';
module.exports = { myVar };

2. 导入路径错误

确保你在导入文件时使用了正确的路径。如果文件在同一目录下,你应该使用相对路径:

// main.js
import { myVar } from './utils.js';
console.log(myVar); // 应该输出 'Hello, World!'

如果路径错误,myVar 可能会是 undefined

3. 文件扩展名问题

在某些情况下,文件扩展名可能会导致问题。确保你在导入时使用了正确的文件扩展名(如 .js.vue 等)。

import { myVar } from './utils.js'; // 确保扩展名正确

4. 异步加载问题

如果你在异步加载模块时遇到问题,确保你正确地处理了异步操作。例如,使用 async/awaitPromise

// main.js
import('./utils.js').then(module => {
  console.log(module.myVar); // 应该输出 'Hello, World!'
});

5. 变量未初始化

确保变量在导出时已经被正确初始化。如果变量在导出时是 undefined,那么导入后也会是 undefined

// utils.js
let myVar;
setTimeout(() => {
  myVar = 'Hello, World!';
}, 1000);
export { myVar }; // 此时 myVar 是 undefined

在这种情况下,myVar 在导出时是 undefined,因为 setTimeout 还没有执行。

6. 模块缓存问题

在某些情况下,模块缓存可能会导致问题。如果你在开发过程中频繁修改代码,尝试清除缓存或重启开发服务器。

7. 环境问题

确保你的开发环境支持 ES6 模块语法。如果你使用的是较旧的环境,可能需要使用 Babel 或其他工具来转换代码。

示例代码

以下是一个简单的示例,展示如何正确导出和导入变量:

// utils.js
export const myVar = 'Hello, World!';

// main.js
import { myVar } from './utils.js';
console.log(myVar); // 输出 'Hello, World!'
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!