【问题标题】:How to send a variable inside of a function to be accessed in another file in Nodejs如何在函数内部发送变量以在 Nodejs 的另一个文件中访问
【发布时间】:2022-09-23 23:29:31
【问题描述】:

我有两个名为 test.js 和 test2.js 的文件,我在 test1.js 中编写了一个函数,该函数将一个值存储在函数调用的变量中,但我无法访问 test2.js 文件中变量中的值。每当我尝试这样做时,它都会显示未定义。

有人可以指导我完成同样的事情吗

这是我的 2 个文件的样子

let det=\'\';
let fine=\'\';
async function init(key)
{
    try{

        det=pkey;
        console.log(pkey);
        fine = uuidv4();
        console.log(fine);
        
    }
    catch(error){
        console.error(error);
    }

}

现在我想在另一个名为 test2.js 的文件中访问 det 和 fine ,我在其中使用 axios


async function getAll(){
    try{
            const response=await axiosClient.get(\'/shoes\',{ headers: {\"key\" : `${det}`,\"sess\":`${fine}`}});
            console.log(response.data);
    }
    catch(error){
        console.error(error);
    }
   
    
}
module.exports.getAll=getAll;
  • 请出示您的代码。在不知道你到底在做什么的情况下,我们不知道你做错了什么(或者你想要的是否可能)。但是,这对我来说听起来像是一个时间问题。如何确保只访问test2.js 中的变量来自test1.js 的函数被调用了吗?
  • 嘿@FelixKling,我已经添加了示例,如果您需要任何东西,请告诉我
  • 如果初始化逻辑确实需要异步,让第一个文件导出一个带有结果的 Promise(或导出一个返回该 Promise 的函数)并在第二个文件中使用 Promise 的值。您没有显示initgetAll 的关系,但现在的问题是您无法知道detfine 的值何时可用。
  • @FelixKling,如果 init 方法不需要是 async ,我需要如何处理?
  • 基本相同,只是您导出的函数可以直接返回值。这基本上就是这个答案所显示的:stackoverflow.com/a/73829768/218196。仍然会有问题需要确保initgetAll 之前被调用。

标签: javascript node.js npm


【解决方案1】:

所以它在技术上是可行的,但可能不推荐。

# file 1
let test1 = 0;
function init1 {test1 = 2;};
init1();
export function getTest1() {return test1};
# file 2
import { getTest1 } from './file1';
function logTest1() {
  console.log(getTest1());
}

【讨论】:

    【解决方案2】:

    如果您首先在初始脚本中在全局范围内声明变量并分配它(无需重新声明),您可以非常简单地实现这一点。也许显示您的代码,以便更好地了解您的问题是什么?

    //test1.js
    let test = 'test';
    function changeTest(change = null) {
        test = change || test;
    }
    
    //test2.js
    (() => {
        console.log(`GLOBAL VARIABLE: ${test}`); // test is 'test'
        changeTest('changed');
        console.log(`AFTER CHANGE: ${test}`); // test is 'changed'
    })();
    

    有关 JS 范围管理的更多信息,请参阅https://www.w3schools.com/js/js_scope.asp

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-06
      • 2018-07-19
      • 1970-01-01
      • 2015-08-08
      • 1970-01-01
      相关资源
      最近更新 更多