Django, Docker, SlickGrid - Невозможно пройтись по графу зависимостей: Cannot find module 'slickgrid'

Я пытаюсь собрать приложение на основе бэкенда Django на Docker, используя PyCharm с NPM и slickgrid.

Когда в каком-нибудь .js-файле пытаешься импортировать slickgrid:

import { SlickGrid, SlickDataView } from 'slickgrid';

Я получаю ошибку Django:

Ошибка фильтра в /todo/ Ошибка: Can't walk dependency graph: Cannot find module 'slickgrid' from '/opt/project/eTools/todo/static/todo/js/main.js'

Для работы со статическими активами Django я использую: django-compressor django-compressor-toolkit

В Dockerfile у меня есть что-то вроде:

`

Установить рабочий каталог

WORKDIR /code (...) RUN apt-get install -y nodejs npm (...) #Slickgrid RUN npm install -g browserify babelify@8 babel-core babel-preset-env babel-cli babel-preset-es2015 RUN npm install -g slickgrid (...)

Скопируйте проект Django

COPY ./eTools/ /code/ `

Похоже, что npm, косвенно используемый Django, не видит 'slickgrid'.

В bash для Docker я вижу следующее: a) в месте, куда приложение было скопировано на последнем шаге Dockerfile (место /code/), в npm есть slickgrid: root@f7401a6daac5:/code# npm list slickgrid code@ /code └── slickgrid@5.8.2 b) но по непонятной причине (по крайней мере, для меня ;)) npm, похоже, вызывается из локации из исключения ('/opt/project/'). проверил в docker bash и там нет 'slickgrid':

root@f7401a6daac5:/opt/project# npm list slickgrid eTools_root@1.0.0 /opt/project └── (пусто)

Посоветуйте, пожалуйста, как я могу решить эту проблему? И почему код вызывается из другого места, а не из /code? Связано ли это с PyCharm?

Часть настроек Django, связанных с компрессией и статикой:

`STATICFILES_DIRS = [
    os.path.join(BASE_DIR, 'eTools', 'static'),
    os.path.join(BASE_DIR, 'todo', 'static'),
    os.path.join(BASE_DIR, 'clients', 'static'),
    'node_modules', os.path.join(BASE_DIR, 'node_modules/'),
    #os.path.join(BASE_DIR, 'static', 'js'), #Add global js directory
]

STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
    'compressor.finders.CompressorFinder',
)

COMPRESS_CSS_FILTERS = [
    'compressor.filters.css_default.CssAbsoluteFilter',
    'compressor.filters.cssmin.CSSMinFilter',
    'compressor.filters.template.TemplateFilter',
    BASE_DIR / 'static',
]

COMPRESS_JS_FILTERS = [
    'compressor.filters.jsmin.JSMinFilter',
]

COMPRESS_PRECOMPILERS = (
    ('module', 'compressor_toolkit.precompilers.ES6Compiler'),
    ('css', 'compressor_toolkit.precompilers.SCSSCompiler'),
)
COMPRESS_ENABLED = True
COMPRESS_LOCAL_NPM_INSTALL = False
COMPRESS_NODE_MODULES = '/usr/local/lib/node_modules'`

Спасибо!

Я пытался следовать нескольким руководствам и, возможно, смешал некоторые настройки?

Вернуться на верх