为什么在 node.js 中使用导出文本时导出不显示为终端中的对象?

Why is exports not displayed as an object in terminal while using Export Literals in node.js?

如果 exports 是节点模块对象中的一个对象,为什么它没有在终端中显示为一个对象(windows 10 中的命令提示符)?

这是 Name.js 模块中的代码:

    module.exports ="Hello World"; 
    console.log(module);

我在 ternianl 中看到的是这样的:

Module {
  id: '.',
  path: 'D:\Projects\Node\Tutorial',
  exports: 'Hello World',
  parent: null,
  filename: 'D:\Projects\Node\Tutorial\names.js',
  loaded: false,
  children: [],
  paths: [
    'D:\Projects\Node\Tutorial\node_modules',
    'D:\Projects\Node\node_modules',
    'D:\Projects\node_modules',
    'D:\node_modules'
  ]
}

如您所见,导出 exports: 'Hello World' 不是一个对象,而是一个字符串。

从技术上讲,模块是一个在日志中可见的对象。

当您将它导入另一个文件时,它将提供您导出的数据,即 'Hello World' 字符串。

虽然导出的值可以是字符串、数字等,module.exports 仍然是一个对象。

有关 module.exports 的详细 [​​=20=] 并需要阅读 https://stackify.com/node-js-module-exports/

您用字符串替换了 module.exports 对象,因此当您记录它时,您只会看到字符串,因为对象已经消失。所以,这个作业:

module.exports ="Hello World"; 

获取 module 对象上 exports 属性 中的对象并将其替换为字符串。所以,现在当您登录 module.exports 时,您只会看到替换它的字符串。

也许你打算做这样的事情:

module.exports.greeting = "Hello World"; 

将对象留在原地并添加 属性。

这很简单 Javascript 所以 exports 只是 module 对象的 属性。如果您为该对象分配其他内容 属性,那么它会用您分配给它的任何内容替换之前的对象。


这在概念上与此几乎相同:

let myexports = { name: "Hi I'm an object" };
console.log(myexports);

myexports = "Hi I'm a string";    // replace object with a string
console.log(myexports);

在任何一种情况下,您都将一个字符串分配给 variable/property 并用该字符串替换之前的对象。