Как экспортировать объект с помощью методов и свойств

У меня есть два js-файла в Electron (который использует Nodejs), и я пытаюсь экспортировать из одного и требовать в другом.

app.js:

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

exports.App = App

Я пытался всеми возможными способами экспорта, в том числе module.exports = App, module.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 ответ

Первое, что я должен сделать, чтобы решить эту проблему, это убедиться, что я использую полный путь к требуемому модулю, как в:

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 Заявление соответственно.

И для справки, "правильный" способ экспортировать вашу карту приложения был бы следующим:

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

Или используя es7:

export default App = {
  ...
}

(См. Экспорт для более подробной информации о модулях es7.)

В любом случае, вам потребуется модуль как:

const App = require(PATH_TO_APP)
Другие вопросы по тегам