Использование math.js в Почтальоне

#javascript #postman #math.js

#javascript #почтальон #math.js

Вопрос:

Я пытаюсь использовать math.js в Postman.

Уже видел совет № 5 на их веб-сайте. Итак, в одном запросе у меня есть

 postman.setGlobalVariable("mathjs", () => {
  \ The full math.js library
});
  

В частности, это код math.js , который я скопировал, на случай, если версия имеет значение.

Затем в запросе, который должен использовать библиотеку, я оцениваю глобальную переменную

 eval(globals.mathjs)();
  

Я не часто использую JavaScript, так что, возможно, это что-то базовое, чего мне не хватает. В первом запросе определяется глобальная переменная mahjs , значением которой является лямбда-выражение, вызывающее код библиотеки. Затем, во втором запросе, вызывается эта лямбда-функция. Пожалуйста, поправьте меня, если мое понимание пока неверно.

Вопрос: Как впоследствии вызывать функции, которые были определены библиотекой?

Я пробовал: math.multiply(x,y); , Math.multiply(x,y); , multiply(x,y); . Ни один из них не является действительным. Функция, multiply похоже, определяется библиотекой и используется как math.multiply(array, matrix) .


Сравнение с повторным использованием, которое я уже сделал.

В одном запросе

 postman.setGlobalVariable("utils", () => {
  myfunction = function (x){
    return x 1;
  };
});
  

и в запросе, который его использует

 eval(globals.utils)();
x = 1;
console.log(myfunction(x));
  

Это работает.

Комментарии:

1. Какую проблему вы пытаетесь решить?

2. @DannyDainton В конечном счете, вызов функций, которые определены math.js в некоторых тестах в Postman.

3. Я понимаю эту часть, но из каких точек данных вы пытаетесь создать math.js ? Кажется немного чрезмерным, если все, для чего вы его используете, — это умножение чисел. Можете ли вы обновить вопрос, чтобы подробнее рассказать о том, как вы собираетесь использовать данные в запросах, здесь может быть другой маршрут, который вы могли бы использовать.

4. @DannyDainton Нет, хорошо, я сделаю более сложную линейную алгебру. Приведенный выше код предназначен для того, чтобы показать ту часть, которую я не понимаю (и ту часть, которую мне удалось выполнить), с примерами как можно более простыми. Если я научусь вызывать функции внутри math.js , я смогу написать остальное самостоятельно.

5. Этот метод от Кевина Свибера, ведущего инженера по разработке решений Postman, может быть лучшим способом добавления модулей CDN и использования их в ваших коллекциях — explore.postman.com/templates/7170/browserify-cdn-modules

Ответ №1:

Это решает вашу проблему:

 const mathjsUrl = "https://cdnjs.cloudflare.com/ajax/libs/mathjs/7.5.1/math.min.js";

pm.sendRequest(mathjsUrl, (err, response) => {
    const mathjs = response.text();

    (new Function(mathjs))();
        let result = math.multiply(4,3);;
        console.log(result);
});
  

Комментарии:

1. Это так, это так. Неплохо. Похоже, что для использования библиотеки было необходимо создать объект функции из текста библиотеки, вместо того, чтобы помещать его в лямбда-выражение и вызывать его. Я попробую это и посмотрю, смогу ли я изменить его, чтобы вставить текст напрямую, вместо того, чтобы запрашивать его у cloudflare. Я думаю, что в моем случае это будет выполняться на компьютерах, которые не подключены к Интернету.