NodeJS запускает экспортированную функцию при компиляции — почему?

Я пытаюсь сослаться на функцию из моего модуля alchemy/broker_communication/tradeking.js в другом модуле alchemy/scheduler/scheduler.js

Однако задолго до запуска кода в scheduler запускается функция, которую я пытаюсь экспортировать из tradeking.js. Я не имею понятия почему; Я добавил трассировку стека в функцию в tradeking, и похоже, что компилятор Node по какой-то причине вызывает ее, но много разочарованных поисков в Google не нашли мне ответа на эту конкретную странность.

Вот модули, которые должны быть актуальны:

index.js

module.exports = 
{
  config: require('./config/config.js'),
  analysis_runner: require('./analysis_runner/analysis_runner_prototype.js'),
  data_feed: require('./data_feed/iex.js'),
  broker: require('./broker_communication/tradeking.js')
}

планировщик/scheduler.js

var routes = require('../index.js');
var data_feed = routes.data_feed;
var analysis_runner = routes.analysis_runner;
var broker = routes.broker;

let results = data_feed.fetch('AAPL', '20190327');
results.then(data => analysis_runner.analyze(data));

broker.printAccountData();

посредник_связь/tradeking.js

var oauth = require('oauth');
var routes = require('../index.js');
var config = require('../config/config.js');

module.exports =
{
  printAccountData: function() 
  {
    console.info("Config is " + config);
    console.info(new Error().stack);
    tradekingConsumer.get(config.api_url + '/accounts.json', config.access_token, config.access_secret, function (err, data, res) {
      if (!data == null) {
        acctData = JSON.parse(data);
        console.info('accttDataccttData: ' + JSON.stringify(acctData.response));
      }
    });
  }
}

var tradekingConsumer = new oauth.OAuth
(
  "https://developers.tradeking.com/oauth/request_token",
  "https://developers.tradeking.com/oauth/access_token",
  config.consumer_key,
  config.consumer_secret,
  "-1.0",
  null,
  "HMAC-SHA1"
);

Вы также можете просто увидеть полный проект на https://gitlab.com/dalseides/алхимия (хотя для тестирования части связи с брокером вам потребуется учетная запись Ally Invest + учетные данные API).

Полный вывод программы:

alchemy 厶 node scheduler/scheduler.js
Config is [object Object] Error at Object.printAccountData (/code/alchemy/broker_communication/tradeking.js:10:17)

at Object.<anonymous> (/code/alchemy/scheduler/scheduler.js:9:8)
at Module._compile (internal/modules/cjs/loader.js:805:30)
at Object.Module._extensions..js (internal/modules/cjs/loader.js:816:10)
at Module.load (internal/modules/cjs/loader.js:672:32)
at tryModuleLoad (internal/modules/cjs/loader.js:612:12)
at Function.Module._load (internal/modules/cjs/loader.js:604:3)
at Function.Module.runMain (internal/modules/cjs/loader.js:868:12)
at internal/main/run_main_module.js:21:11 Average: 188.755                S Mv Avg: 188.8498              L Mv Avg: 188.81733333333332          

shortIsHigh: true
--- BUYBUYBUY --- Average: 188.48 S Mv Avg: 188.79479999999998 L Mv Avg: 188.82755555555553 shortIsHigh: false

--- SELLSELLSELL --- Average: 188.666 S Mv Avg: 188.80620000000002 L Mv Avg: 188.7992666666667 shortIsHigh: true
--- BUYBUYBUY --- Average: 188.497 S Mv Avg: 188.76 L Mv Avg: 188.8768965517242 shortIsHigh: false

--- SELLSELLSELL --- Average: 188.865 S Mv Avg: 188.7616 L Mv Avg: 188.74286666666669 shortIsHigh: true
--- BUYBUYBUY --- Average: 188.867 S Mv Avg: 189.17379999999997 L Mv Avg: 189.25986666666668 shortIsHigh: false
--- SELLSELLSELL --- Average: 189.03 S Mv Avg: 188.9752 L Mv Avg: 188.96590000000003 shortIsHigh: true

--- BUYBUYBUY --- Average: 188.776 S Mv Avg: 188.895 L Mv Avg: 188.89863333333335 shortIsHigh: false

--- SELLSELLSELL --- Average: 188.927 S Mv Avg: 188.8658 L Mv Avg: 188.85473333333337 shortIsHigh: true
--- BUYBUYBUY --- Average: 188.517 S Mv Avg: 188.7594 L Mv Avg: 188.7894 shortIsHigh: false

--- SELLSELLSELL --- Average: 187.388 S Mv Avg: 187.12439999999998 L Mv Avg: 187.07276666666667 shortIsHigh: true
--- BUYBUYBUY --- Average: 188.085 S Mv Avg: 188.2184 L Mv Avg: 188.23606666666672 shortIsHigh: false

--- SELLSELLSELL --- Average: 188.304 S Mv Avg: 188.2522 L Mv Avg: 188.24159999999998 shortIsHigh: true
--- BUYBUYBUY --- Average: 188.156 S Mv Avg: 188.2298 L Mv Avg: 188.23733333333334 shortIsHigh: false

--- SELLSELLSELL --- Average: 188.514 S Mv Avg: 188.1266 L Mv Avg: 188.0391 shortIsHigh: true
--- BUYBUYBUY --- Average: 188.83 S Mv Avg: 188.9246 L Mv Avg: 188.96199999999996 shortIsHigh: false

--- SELLSELLSELL --- Average: 189.026 S Mv Avg: 188.9622 L Mv Avg: 188.9615333333333 shortIsHigh: true
--- BUYBUYBUY --- Average: 188.775 S Mv Avg: 188.93040000000002 L Mv Avg: 188.97613333333337 shortIsHigh: false
--- SELLSELLSELL --- Average: 188.419 S Mv Avg: 188.3324 L Mv Avg: 188.31433333333334 shortIsHigh: true
--- BUYBUYBUY --- Average: 188.438 S Mv Avg: 188.5306 L Mv Avg: 188.54593333333332 shortIsHigh: false

--- SELLSELLSELL --- TOTALPROFITGUYS: -0.4730000000000132

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
27
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Object.<anonymous> (/code/alchemy/scheduler/scheduler.js:9:8)
Мне кажется, что он работает из планировщика.

Вызов перед ним асинхронный
let results = data_feed.fetch('AAPL', '20190327'); results.then(data => analysis_runner.analyze(data));

Вы уверены, что это не должно называться после этого? IE
let results = data_feed.fetch('AAPL', '20190327') .then(data => analysis_runner.analyze(data)) .then(() => broker.printAccountData())

Другие вопросы по теме