Script путь для ExpressJS в node_modules

У меня есть index.jade в моей папке 'views'.

doctype html
html
  head
    title= title
    link(rel='stylesheet', href='/stylesheets/main.css')
    script(src='../node_modules/some_package/package_script.min.js')

У меня есть index.js в папке маршрутов с маршрутизатором:

router.get('/', function(req, res) {
  res.render('index', { title: 'title goes here' })
});

Я продолжаю получать ошибку 404, когда пытаюсь получить доступ к папке node_modules в jade файле в консоли: GET /node_modules/some_package/package_script.min.js 404 1ms - 19b

Как именно работает путь к файлу/как его исправить для Express, когда я пытаюсь получить доступ к script в node_modules? Нужно ли копировать необходимые файлы javascript и размещать их в папке "javascripts" под "public", чтобы она работала?

Спасибо!

Ответ 1

Вау! Держись... node_modules является частным каталогом и не должен быть открыт. По умолчанию каталог public представляет собой общедоступный корневой путь для статических файлов:

app.use(express.static(path.join(__dirname, 'public')));

В каталоге есть javascripts. Скопируйте script там и измените атрибут src в своем шаблоне, чтобы:

/javascripts/package_script.min.js

Если вы действительно хотели бы обслуживать node_modules, что было бы плохой идеей, добавьте следующее ниже строки app.use(express.static(...)); выше:

app.use(express.static(path.join(__dirname, 'node_modules')));