Благодаря этому ответу Ашиша ( Можно ли перенести локальные модули из node_module? ), я смог найти решение.
Таким образом, проблема заключалась в том, что модуль, который я использовал, импортировал файл js, который не был полностью перенесен (оператор распространения объектов), вместо файла ts или tsx. Это означало, что мне нужно было переустановить загрузчик babel, чтобы я мог сделать отдельный проход с загрузчиком babel для файлов js. Следующая проблема, с которой я столкнулся, заключалась в том, что модуль был скомпилирован с помощью commonjs, и поэтому импорт также пришлось переносить.
Это мои погрузчики выглядят сейчас.
{
{
test: /\.js$/,
use: {
loader: 'babel-loader',
options: {
presets: [
[
'edge',
{
transpile: 'es2015',
modules: 'commonjs'
}
]
]
}
},
include: [path.resolve(__dirname, 'node_modules/@furystack')]
},
{
test: /\.tsx?$/,
use: [
{
options: {
useTranspileModule: true,
forceIsolatedModules: true,
useCache: true,
useBabel: true,
babelOptions: {
babelrc: false /* Important line */,
presets: [
[
'edge',
{
transpile: 'modern',
modules: 'false'
}
]
]
},
reportFiles: ['src/**/*.{ts,tsx}'],
babelCore: '@babel/core'
},
loader: 'awesome-typescript-loader'
}
],
include: [path.resolve(__dirname, 'src')]
},
}
Как всегда: Это зависит ;-)
, Когда мне не нужны никакие апачские функции, я иду с чистым веб-сервером Python как вставка и т.д., Какой точно зависит от Вашего приложения, которое я предполагаю и могу быть решен путем выполнения некоторых сравнительных тестов. Я всегда хотел сделать некоторых, но никогда не приезжал в него. Я предполагаю, что Порождение могло бы иметь некоторые преимущества в использовании не блокирующий IO из поля, но у меня иногда были проблемы с ним из-за исправления, которое это делает.
Вы всегда свободны поместить лак впереди также, конечно.
, Если Apache требуется, я обычно иду с решением 3 так, чтобы я мог разделить процессы. Можно также более легко переместить процессы в другие серверы и т.д. Мне просто нравится разделять вещи.
Для статических файлов я использую прямо сейчас отдельный сервер для проекта, который просто служит статическому images/css/js. Я использую lighttpd в качестве веб-сервера, который имеет высокую эффективность (в этом случае, у меня нет лака впереди больше).
Другой полезный инструмент supervisord для управления и контроля этих сервисов.
я дополнительно использую buildout для управления моим развертыванием и песочницами разработки (вместе с virtualenv).
я абсолютно любил бы Вас к, перенес меня с деталями о, какой и whys, специализированный материал, и т.д.
Ho. Хорошо Вы попросили его!
Как Daniel я лично использую Apache с mod_wsgi. Это является все еще достаточно новым, что развертывание его в некоторых средах может быть борьбой, но если Вы компилируете все сами так или иначе, что это довольно легко. Я нашел это очень надежным, даже ранние версии. Опоры Graham Dumpleton для того, чтобы удержать контроль над ним в значительной степени один.
Однако для меня важно что работа приложений WSGI через все возможные серверы. Существует что-то вроде дыры в данный момент в этой области: у Вас есть стандарт WSGI, говоря Вам, что делает вызываемое WSGI (приложение), но нет никакой стандартизации развертывания; никакой единственный способ сказать веб-сервер, где найти применение. Нет также никакого стандартизованного способа, чтобы заставить сервер перезагрузить приложение при обновлении его.
подход, который я принял, должен поместить:
вся прикладная логика в модулях/пакетах, предпочтительно в классах
все определенное для веб-сайта удовлетворение требованиям заказчика, которое будет сделано путем разделения на подклассы главного приложения и переопределяющих участников
все определенные для сервера настройки развертывания (например, фабрика соединения с базой данных, почтовые релейные настройки) как класс __ init __ () параметры
, один верхний уровень вЂapplication.py’ сценарий, который инициализирует Класс приложений с корректными настройками развертывания для текущего сервера, затем запускает приложение таким способом, которым это может работать развернутое сценарием CGI, mod_wsgi WSGIScriptAlias (или Пассажир, который, по-видимому, работает тот же путь), или может взаимодействоваться с из командной строки
модуль помощника, который заботится о вышеупомянутых проблемах развертывания и позволяет приложению быть перезагруженным, когда модули, приложение полагается на изменение
Поэтому, на что application.py похож в конце, являются чем-то как:
#!/usr/bin/env python
import os.path
basedir= os.path.dirname(__file__)
import MySQLdb
def dbfactory():
return MySQLdb.connect(db= 'myappdb', unix_socket= '/var/mysql/socket', user= 'u', passwd= 'p')
def appfactory():
import myapplication
return myapplication.Application(basedir, dbfactory, debug= False)
import wsgiwrap
ismain= __name__=='__main__'
libdir= os.path.join(basedir, 'system', 'lib')
application= wsgiwrap.Wrapper(appfactory, libdir, 10, ismain)
wsgiwrap. Обертка проверяет каждые 10 секунд, чтобы видеть, был ли какой-либо из модулей приложения в libdir обновлен, и раз так делает некоторое противное sys.modules волшебство разгрузить их всех надежно. Тогда appfactory () назовут снова для получения нового экземпляра обновленного приложения.
(Можно также использовать инструменты командной строки такой в качестве [1 121]
./application.py setup
./application.py daemon
для выполнения любой установки и рычагов фоновых задач, обеспеченных приложением callable —  a бит как то, как distutils работает. Это также отвечает для запущений/останавливания/перезапущения как init сценарий.)
Другой прием, который я использую, должен поместить настройки развертывания для нескольких серверов (разработка/тестирование/производство) в том же application.py сценарии и осуществить сниффинг вЂsocket.gethostname () ’ для решения который определенный для сервера набор настроек использовать.
В какой-то момент я мог бы упаковать wsgiwrap и выпустить его правильно (возможно под другим именем). Тем временем, если Вам интересно, Вы видите версию разработки собачьего корма в http://www.doxdesk.com/file/software/py/v/wsgiwrap-0.5.py .
Абсолютной самой легкой вещью развернуться является CherryPy. Ваше веб-приложение может также стать автономным веб-сервером. CherryPy является также довольно быстрым сервером, полагая, что он записан в чистом Python. После этих слов это не Apache. Таким образом я нахожу, что CherryPy является хорошим выбором для веб-приложений пониженной громкости.
Кроме этого, я не думаю, что существует любое право, или неправильно ответьте на этот вопрос. Много веб-сайтов большого объема было основано на технологиях, о которых Вы говорите, и я не думаю, что можно пойти также неправильно любым из тех путей (хотя я скажу, что соглашаюсь с модификацией-wsgi, не находящейся на должном уровне на каждом неапачском сервере).
кроме того, я использовал isapi_wsgi для развертывания приложений Python под IIS. Это меньше, чем идеальная установка, но это работает, и Вы не всегда добираетесь для выбора иначе, когда Вы живете в центральном окнами мире.
Nginx инвертируют и статический совместный доступ к файлам прокси + XSendfile + uploadprogress_module. Ничто не бьет его для цели.
На стороне WSGI или Apache + mod_wsgi или cherrypy сервер. Мне нравится использовать cherrypy wsgi сервер для приложений на серверах с меньшей памятью и меньшим количеством запросов.
Обоснование:
я сделал сравнительные тесты с различными инструментами для различных популярных решений.
у меня есть больше опыта с более низким уровнем TCP/IP, чем веб-разработка, особенно http реализации. Я более уверен, что могу распознать хороший http сервер, чем я могу распознать хорошую веб-платформу.
я знаю Скрученный намного больше, чем Django или Опоры. Стопка http в Скрученном все еще не до этого, но это будет там.
Я использую Google App Engine для приложения, которое я разрабатываю. Это запускает приложения WSGI. Вот пара битов информации о нем.
Это - первое веб-приложение, я когда-либо действительно продолжал работать, таким образом, у меня нет основания для сравнения, но если Вы - поклонник Google, Вы могли бы хотеть изучить его. Я хорошо провел время с помощью него в качестве моей платформы для изучения.
Apache httpd + mod_fcgid использующий web.py (который является wsgi приложением).
Работы как очарование.
TurboGears 2.0 уезжает Бета в течение следующего месяца (был в нем в течение большого количества времени). 2.0 улучшает 1,0 ряда и пытается дать Вам лучший среди аналогов стек WSGI, таким образом, он делает некоторый выбор по умолчанию для Вас, если Вы хотите наименьшее количество суеты.
это имеет эти tg*
инструменты для тестирования и развертывания в 1.x ряд, но теперь преобразованный к paster
эквиваленты в 2,0 рядах, какие shoud кажутся знакомыми, если у Вас есть expermiented с pylons
.
tg-admin quickstart —> paster quickstart tg-admin info —> paster tginfo tg-admin toolbox –> paster toolbox tg-admin shell –> paster shell tg-admin sql create –> paster setup-app development.ini
Это требуется быть более гибкими в стеке WSGI (выбор ORM, выбор templater, выбор формирования), Опоры становится объединенным выбором. Это было бы мой рекомендуемый выбор , так как он предлагает превосходную документацию и позволяет Вам экспериментировать с различными компонентами.
Это - удовольствие работать с в результате и продолжает работать под Apache (производственное развертывание) или автономный (полезный для тестирования и экспериментирования этапа).
, таким образом, это следует, можно сделать обоих с Опорами:
python
автономный) FastCGI
, принимая базу данных Вы выбираете, может поддержать на высоком уровне) администраторский интерфейс Опор очень похож на TurboGears. Вот игрушка автономна пример:
$ paster create -t pylons helloworld $ cd helloworld $ paster serve --reload development.ini
для развертывания производственного класса, Вы могли обратиться к руководству по установке Apache + FastCGI + mod_rewrite
, доступен здесь . это увеличилось бы к большинству потребностей.
Мы используем чистую Вставку для некоторых наших веб-сервисов. Легко развернуться (с нашим внутренним механизмом развертывания; мы не используем Вставку, Развертываются или что-нибудь как этот), и хорошо минимизировать различие между производственными системами и что работает на рабочих станциях разработчиков. Протест: мы не ожидаем низкую задержку из самой Вставки из-за тяжелой природы наших запросов. В некотором сравнительном тестировании сырой нефти, которое мы, мы не становились фантастическими результаты; это только что закончило тем, что было спорно из-за расхода нашего типичного обработчика запросов. До сих пор это хорошо работало.
Статические данные были обработаны абсолютно отдельным (и несколько "органически" выращены), стеки, включая использование S3, Akamai, Apache и IIS, различными способами.
Apache+mod_wsgi,
Простой, чистый. (только четыре строки конфигурации веб-сервера), легкий для другого sysadimns получить их голову вокруг.