【问题标题】:Exported object is empty导出的对象为空
【发布时间】:2020-08-05 19:28:31
【问题描述】:

两天前我一直在为不应该阻止我的事情苦苦挣扎。

基本上,我正在构建一个使用 Express 的 nodeJS 应用程序。 在我的主文件(位于我的根文件夹中)中,我正在导出一些变量/常量,出于示例的目的,我将它们替换为:

// ./index.js
const test = 'test'
module.exports = { test }
... some express initialization/routers

然后我有另一个文件,我想在其中使用“测试”变量,所以我需要我的主文件:

// ./aaa/bbb/ccc/test.js
const { test } = require('../../../index);
const myRouter = require('express').Router();

myRouter.get('/', function (req, res){
    console.log(test) // undefined
})

我真的不知道为什么当我正确导出它并通过我的 require 语句“导入”它时它会未定义。

我还尝试“安慰”我应该收到的整个对象,但它是空的:{}

编辑:我正在执行的“主”脚本确实是 index.js,但我非常怀疑这是问题的原因

我无法真正找出问题所在,我需要导出一些变量以在我的项目中访问它们

谢谢!

【问题讨论】:

  • 如果您在 myRouter 之外进行 console.log 测试,它是否有效?
  • 我忘了提,我也试过了,但我仍然得到一个未定义/空的对象(尝试 console.log 导出器变量和整个对象,没有成功)
  • 导出前 index.js 的内部情况如何?那个console.log也是未定义的吗?
  • 在 index.js 中,如果我使用 console.log(test),它正在工作,真的无法找出那些空的导出对象可能是什么问题......
  • 这里没什么可做的。它看起来是正确的。也许只是为了好玩试试module.exports.test = test。我敢肯定有一些非常简单的东西。您还可以在 codesandbox.io 中创建一个模拟,这将为我们提供更多的工作。

标签: node.js node-modules


【解决方案1】:

我认为你做得对。问题可能是 es6 功能在您的节点版本上不可接受。试试看:module.exports = { test:test }

【讨论】:

  • 嘿!我也试过了,遗憾的是它也不起作用:(我正在使用节点 v12.18.0 btw
  • 您好 - 我正在审核您的回答,因为这是首次发布的标准流程。一个可能有帮助的建议:在您的帖子中包含代码 sn-p 时,您可能希望使用以下字符分隔代码 sn-p:(before and after)。使用此技术将应用代码格式(如:module.exports = { test:test }),这使代码更易于阅读,并允许您清楚地标记您希望包含在代码 sn-p 中的确切文本。
  • 澄清一下,我指的是反引号 (`) 字符(位于大多数键盘的左上角)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-14
  • 1970-01-01
相关资源
最近更新 更多