javascript - 如何导出带有方法和属性的对象

标签 javascript node.js export electron require

我在 Electron 中有两个 js 文件(使用 Nodejs),我尝试从一个文件导出并在另一个文件中 require 。

app.js:

App = {
 server: {
   host: '192.168.0.5',
   user: 'root',
 }
 ping: function() {
 }
}

exports.App = App

我已经尝试了所有可能的导出方式,包括module.exports = Appmodule.exports.App = App等等。

ping.js 第一次尝试:

var App = require('../app.js') // I have also tried adding .App to the end
console.log(App) // This returns an object which contains the App object

ping.js 第二次尝试:

var App = require('../app.js')
App.x = 'y'
console.log(App) // this returns an object which contains the App object and the x property

App 可能包含另一个 App 对象,但 console.log(App.App) 表示它不存在。

最佳答案

解决这个问题我要做的第一件事是确保我使用所需模块的完整路径,如下所示:

const Path = require('path')
const App = require(Path.join(__dirname,'../app')) // the .js isn't needed here.

请注意,这假设 app.js 文件位于应用程序运行所在目录的直接父目录中。

如果这不起作用,我会确保文件位于您认为的位置,并且您正在运行的进程位于您认为的文件系统中。您可以通过将其添加到主脚本文件的顶部来确定这一点:

console.log("current working directory:",process.cwd())

或者在 es6 中:

console.log(`current working directory: %s`, process.cwd())

如果打印的目录与您的假设不符,请相应地修改您的 require 语句。

郑重声明,导出应用程序 map 的“正确”方法是:

const App = {
  ... 
}
module.exports = App

或者使用 es7:

export default App = {
  ...
}

(有关 es7 模块的更多信息,请参阅 export。)

无论哪种方式,您都需要该模块:

const App = require(PATH_TO_APP)

关于javascript - 如何导出带有方法和属性的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43355050/

相关文章:

javascript - 如何使 Textarea 充当密码字段

javascript - 避免 Redis 持久化(Socket.io + Cluster + RedisStore)

r - 如何定义导出包中的哪些变量或函数

wordpress - 如何使用 postmeta 和图像导出自定义帖子类型详细信息

用于 node.js 的 MySQL 驱动程序与 Sphinx 一起使用

c# - 在 C# 中导出到 Word 文档

javascript - 在 MVC 中的同一 View 中填充第二个模型 : Prevent postback

javascript - 输入值 onkeydown 返回不正确的值(少一)

javascript - 如何在javascript中将文件转换为字节流

javascript - “await”在异步函数中不起作用