【问题标题】:Read/Use variables from another javascript file从另一个 javascript 文件中读取/使用变量
【发布时间】:2020-04-02 11:44:11
【问题描述】:

如果我导入这样的 js 文件:

const importedFile = require( './file1');

我可以看到 file1 的所有函数和控制台日志正在运行,但我无法运行或使用特定变量

如果我 console.log( importedFile ) 我得到这个:{} 空对象!

如何从 file1.js 中获取所有变量?

【问题讨论】:

  • 你不能改变 const 值
  • 没有人试图改变。只是为了阅读..
  • @DarrenSweeney — 这是 ES6 导入,而不是 Node 模块系统。
  • 从那个链接我试过这个: import * as importedFile from './file1.js';给我这个:SyntaxError: Unexpected token *

标签: javascript node.js variables scope


【解决方案1】:

JavaScript 模块是具有自己作用域的自包含环境。

只有显式导出的值在模块外部可用。

因此,如果您希望 ./file1 中的某些内容在 importedFile 中可用,那么您需要将其包含在导出中:

const value = "Hello, world";

function thisIsAFunction() {
    console.log(value);
}

module.exports = {
    thisIsAFunction
}

那么你可以:

const importedFile = require( './file1');
importedFile.thisIsAFunction();

【讨论】:

  • 是的,我能够导入一个变量,但正如我所说,我可以看到一切都在运行,但我什么都不能使用,这是为什么呢?有没有办法导出所有变量?
  • 没有。您不能导出变量,只能导出值。
  • 是的,所有变量值,全部加在一起,而不仅仅是一个。另一个问题是,在 file1 中,我的变量值每 10 秒更改一次,但是当我尝试导入时,我只得到第一个值
  • 正如我所说,您只能导出值,不能导出变量。您可以导出一个函数,根据需要为您提供当前值。您可以在导出的对象中添加任意数量的值。
  • 好吧,但是如果 ' const value = "Hello, world"; ' 是在函数内部声明的,那么如何读取呢?因为我需要阅读/使用的不仅仅是 console.log 它
【解决方案2】:

我想通了,在 file1 中我可以像这样导出变量:

function thisIsAFunction() {
    let var1 = { qty: 123 }
    let var2 = { qty: 123 }
    let var3 = { qty: 123 }

    return [ var1, var2, var3 ];
}
module.exports = {
    thisIsAFunction
}

然后像这样读取/使用第一个变量:

let importedValue= importedFunct.thisIsAFunction()

console.log(  importedValue[0][0].qty)

【讨论】:

    猜你喜欢
    • 2012-07-22
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多