Выполнение кода Node.JS в веб-приложении .NET Core

Код здесь.

module.exports = function (callback, ID, PATHWAY, CAMPAIGN) {

    var google = require('googleapis');
    var analytics = google.analytics('v3');
    var key = require('JSON PATHWAY');
    var VIEW_ID = 'VIEW ID';

    var jwtClient = new google.auth.JWT(
        'SERVICE ACCOUNT', null, key.private_key,
        ['https://www.googleapis.com/auth/analytics.readonly'], null
    );

    jwtClient.authorize(function (err, tokens) {
        console.info('Calling tokens');
        if (err) {
            console.info(err);
        } else {
            analytics.data.ga.get({
                'auth': jwtClient,
                'ids': VIEW_ID,
                'metrics': 'ga:pageViews',
                'dimensions': 'ga:browser',
                'start-date': '30daysAgo',
                'end-date': 'yesterday',
                'sort': '-ga:visits',
                'max-results': 100,
                'filters': 'ga:campaign==NAME', 
            }, function (err, response) {
                if (err) {
                    console.info(err);
                } else {
                    var result = JSON.stringify(response, null, 4);
                }
            });
        }
    });

    callback(/* error */ null, result);
} 

Итак, выше мой код Node.JS.

Вот мой код контроллера.

public async Task<IActionResult> TestNode([FromServices] INodeServices nodeServices)
{
    var result = await nodeServices.InvokeAsync<Object>("./wwwroot/js/GoogleAnalytics", 1, 2, 3);
    return Ok(result);
}

Все довольно просто и понятно, если не считать того, что я запускаю. Я понял.

Выполнение кода Node.JS в веб-приложении .NET Core

Итак, я проверил следующее:

  • Googleapi присутствует
  • Папка google.analytics и код v3 находятся там, где должны быть
  • Версия узла актуальна
  • Узел запущен
  • Код Node.JS работает нормально (вне ядра).

У вас есть подходящая версия? Вы звоните в google.analytics('v3'), но согласно этой аналитике уходит с v4. github.com/google/google-api-nodejs-client/issues/…. Возможно, вы используете версию 4?

S Meaden 30.04.2018 15:11

Привет, спасибо за ответ. хороший крик, и я только что проверил это, и похоже, что в корневой папке аналитики нет файла v4. Я также изменил v3 на v4, но все равно получаю ту же ошибку «google.analytics не является функцией». Должно быть что-то, что я здесь пропустил ... Я также заметил, что в Visual Studio в dependencies-npm, когда вы открываете дерево для googleapi, оно не показывает google.analytics. Что тут при чем? если да, то как его добавить или он вообще должен отображаться? Благодарность

KaiMHirst 30.04.2018 15:17

Глядя на источник -> export {analytics_v3} from './apis/analytics/v3';, я предполагаю, что это то, что вы хотите импортировать.

Keith 30.04.2018 15:18

Смотрим на источник -> экспортируем {analytics_v3} из './apis/analytics/v3'; поэтому я предполагаю, что это то, что вы хотите импортировать. Это делается через консоль или через команду импорта в файле кода. та

KaiMHirst 30.04.2018 15:21

Может быть, прежде чем вызывать это через службы узлов, попробовать запустить сценарий напрямую с помощью узла?

poke 30.04.2018 15:25

ОК. так что ive удалось запустить его (я думаю), но он ничего не возвращает в ядре .net, поэтому следующие шаги - протестировать его в самом узле, а затем перейти оттуда. Между прочим, я сделал следующее .... var {google} = require ('googleapis'); var analytics = google.analytics ('v3'); И это сработало !! Я понятия не имею, почему и как, или вообще ... может кто-нибудь пролить свет на это, может быть? спасибо ужасно ..

KaiMHirst 30.04.2018 15:35
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
6
53
0

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