如何使用方法和属性导出对象

时间:2017-04-11 19:53:17

标签: javascript node.js export electron require

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

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)表示它不存在。

1 个答案:

答案 0 :(得分:1)

我要做的第一件事就是确保我使用所需模块的完整路径,如:

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声明。

对于记录,导出App地图的“正确”方法是:

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

或使用es7:

export default App = {
  ...
}

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

无论哪种方式,您都需要将模块命名为:

const App = require(PATH_TO_APP)