Использование внешней библиотеки JS, установленной на узле, в редакторе Atom

Я пытаюсь понять, как использовать внешние библиотеки javascript в редакторе Atom. Я использовал npm для установки библиотеки momentjs, так как Atom использует node. Однако я в недоумении, что теперь делать? Я не могу найти способ использовать библиотеку в Atom.

Я думал, что могу перейти к файлу Atom init.coffee и выполнить require "moment" (также пробовал require "momentjs"), но, похоже, ничего не работает.

Вся причина этого в том, что я могу использовать некоторые библиотеки javascript для форматирования дат во фрагменте (у меня есть еще один ТАК вопрос о том, что я закрою, если это решит его).

Но это общий вопрос об установке и запуске библиотек javascript в Atom. Я просмотрел документы Atom и погуглил, но не нашел хорошего ответа. Я думал, что-то вроде этого будет довольно легко?


person Dan L    schedule 05.09.2014    source источник
comment
Я думаю, ты перепутал свои технологии, Дэн. Вы установили momentjs через Node.js, поэтому его можно использовать только в Node.js. Ваша цель — создать фрагмент кода на стороне сервера для использования в Node.js или фрагмент кода на стороне клиента для использования в браузере? Кроме того, Atom - это просто редактор, он помогает вам редактировать файлы, которые вы должны создать - он не поможет вам require момент, который в nodejs будет выполнен с помощью: var moment = require('moment');   -  person Jasdeep Khalsa    schedule 05.09.2014
comment
Возможно Вы правы. Я слышал, что Atom был построен с использованием узла, и поскольку Atom — это веб-приложение (с использованием Chromium), написанное на CoffeeScript, я подумал, что будет довольно просто загрузить внешнюю библиотеку JavaScript и использовать ее. Я знаю, что Atom может создавать пакеты, которые имеют библиотеки узлов в качестве зависимостей, но это кажется немного излишним, когда все, что я хочу сделать, это загрузить и использовать одну библиотеку JS. Цель состоит в том, чтобы просто создать фрагмент в Atom, который выводит хорошо отформатированную дату, пока я разрабатываю. Я могу использовать его с сырым JS, но это уродливое и не очень хорошее решение. Просто хочу немного почистить.   -  person Dan L    schedule 05.09.2014
comment
Я понимаю! Посмотрите на мой ответ на ваш другой вопрос. Да, я согласен, что пакет Atom может быть излишним для этого, простая веб-страница, открытая сбоку, должна помочь!   -  person Jasdeep Khalsa    schedule 05.09.2014


Ответы (2)


Поскольку Atom связывает свою собственную версию узла (и, следовательно, не использует ваши глобальные версии), он не будет загружать глобально установленные модули через require. Однако метод require поддерживает абсолютные пути, вы все равно можете загрузить любой модуль, если знаете его абсолютный путь, что не должно быть проблемой в вашем конкретном случае.

В вашем сценарии инициализации вы можете написать:

momentjs = require('/path/to/momentjs')

Но остерегайтесь модулей, которые поставляются с двоичными файлами. Atom использует узел 0.11.13, поэтому, если модуль, который вы пытаетесь потребовать, был установлен для другой версии, вы получите Error: Module did not self-register.. В этом случае я боюсь, что единственным решением будет установка модуля в качестве зависимости от пакета Atom (как это было предложено @nwinkler).

person Cédric Néhémie    schedule 29.09.2014

При разработке собственного пакета вы должны уметь делать следующее:

Установите moment с помощью npm install --save moment — это установит библиотеку moment.js в качестве зависимости и зарегистрирует ее в файле package.json.

В вашей библиотеке импортируйте его в файл lib:

moment = require 'moment';
myDate = moment().format();

Затем вы можете использовать объект момента для форматирования временных меток.

Все это будет работать только в том случае, если вы делаете свой собственный пакет, конечно. Не уверен, что это будет работать и с простыми фрагментами.

person nwinkler    schedule 07.09.2014
comment
К сожалению, я начинаю думать, что мой собственный пакет — единственное решение на данный момент. Я бы подумал, что, поскольку Atom создан с использованием веб-технологий, я мог бы найти способ указать на внешнюю библиотеку JS, но, похоже, это не так. Я проверю свой собственный пакет и приму этот ответ, если не найду лучшего решения. - person Dan L; 07.09.2014