Скомпилируйте пакет NPM с помощью Browserify

Мне нужно использовать функциональность пакета NPM (подходит-файл-парсер) в приложении, отличном от Node. До сих пор я пытался

  1. Извлеките пакет, соберите его и включите выходной пакет в качестве тега скрипта. Проблема здесь в том, что собранный пакет dist/ включает в себя 4 файла, каждый из которых использует модули через require(). В основном они зависят друг от друга, поэтому я подумал, что могу просто включить их в правильном порядке, но один зависит от buffer.
binary.js
fit-parser.js
fit.js
messages.js
  1. Запустите каталог dist/ через Browserify, чтобы создать файл package.bundle.js и включить это в качестве тега скрипта. Кажется, это работает без ошибок, но основная функция, которая мне нужна для создания экземпляра нужной мне логики, отсутствует в браузере. Фактически, никто глобальных переменных, присутствующих при непосредственном запуске файлов, присутствуют после включения файла пакета.
browserify fit-parser.js -o fit-parser.bundle.js

Чтобы использовать этот пакет, нужно иметь возможность создать новый экземпляр FitParser с помощью new FitParser({...options}). Эта функция взята из файла fit-parser, но я не могу включить ее в глобальную область браузера.

Попробуйте добавить -> --standalone FitParser

Keith 30.04.2019 17:40

Похоже, это сработало! Так рад, что это был флаг конфигурации, а не что-то вроде «ну, отредактируйте все файлы в ....». Если вы сделаете из него ответ с объяснением Зачем, он сработал, я отмечу его как правильный.

Will Luce 30.04.2019 18:04
Поведение ключевого слова "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
2
1 340
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

Пакеты NPM, как правило, являются модулями, поэтому они обычно не влияют на глобальные.

Обычно вы делаете что-то вроде ->

const FitParser = require("fit-parser");

или

import {FitParser} from "fit-parser"

Второй вариант теперь поддерживается в современных браузерах, поэтому теоретически вы можете использовать этот вариант и не использовать browserfy.

Но если вы хотите использовать старомодный способ, с файлом global. Для этого используется опция --standalone {exportname}. {exportname} был тем, что вы хотите назвать в глобальном масштабе. По сути, это своего рода выполнение window.FitParser = FitParser внутри сценария.

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