Давайте начнем с рассмотрения того, как вы используете require.Похоже, вы пытаетесь загрузить все требования проекта в core.coffee, а затем реэкспортировать их в другое место.Это странный способ сделать это, большинство людей просто require
используют те библиотеки в каждом модуле, которые в них нуждаются (по крайней мере, пока смотрите конец моего ответа).
Например, вам нужен mongoose в lib/ models / Snippet, поэтому просто потребуйте его там:
lib / models / Snippet:
mongoose = require 'mongoose'
Далее, нет необходимости использовать __dirname
для указания относительного пути, требовать копийхорошо с путем, начинающимся с ./
:
require './lib/models/Snippet'
Я все еще не смог заставить код работать правильно (я предполагаю, что мы не видим полный код), но это можетдостаточно, чтобы направить вас на правильный путь.
Наконец, если вы хотите пойти по пути экспорта всего в главном модуле, я могу предложить взглянуть на проект слоев dave-elkan.Обычная версия не поддерживает coffeescript, но я создал fork , который поддерживает.
Это очень легкий и практически не делает предположений о структуре вашего проекта.Основная идея заключается в том, что вы предоставляете layers()
свой объект экспресс-приложения и каталог.Слои будут сканировать этот каталог и устанавливать любые подкаталоги в качестве слоев на объекте приложения.
В вашем случае вы передадите rootPath: __dirname + '/lib'
, и ваш объект приложения будет добавлен app.models.Snippet
и app.routes.general
.Это все еще не совсем так, как я бы это структурировал, но вы можете найти что-то, что соответствует вашему стилю.