【问题标题】:Private, local (and app specific) modules私有、本地(和特定于应用程序)模块
【发布时间】:2013-07-03 15:46:15
【问题描述】:

我有一个具有以下结构的 Node.js 应用程序:

+
|-- app/
|   |-- config.js
|   |-- modules/     // MVC app modules/components.
|       |-- login/
|       |-- signup/
|-- lib/             // App specific modules/libraries.
|   |-- auth/
|   |-- storage/
|-- node_modules/    // 3rd party modules.
|   |-- express/
|   |-- hjs/
|-- public/
|-- app.js
|-- package.json

lib/ 内部的require 模块有哪些选项 - 例如 - 登录模块,但不必指定相对路径?

// app/modules/login/index.js

var auth = require('../../../lib/auth'); // <-- I'd rather have require('auth')

module.exports = function(app) {    
    app.get('/', auth.ensureAuthenticated, function(req, res) {
        res.send('/');
    });    
};

我不想在 Github 上的 lib/ 中托管模块,并且希望只为第 3 方模块保留 *node_modules* 目录。

TJ 的Modular web applications with Node.js and Express(见 2:25)在谈到 bundledDependencies 时看起来很有希望。但是那个doesn't seem to work yet

更新:
我现在已经稍微扁平化了我的结构,并决定改用相对路径。

【问题讨论】:

  • 设置$NODE_PATH 是一个选项吗?
  • 如果有其他方法,我宁愿不这样做,因为在 Heroku 等人上没有设置它的选项。
  • 你可以在(比如)app/config.js 中使用module.paths.push(__dirname + '/../lib/'),虽然感觉有点脏...
  • 感谢 Robert 抽出宝贵时间 :) module.paths 不久前不是被删除了吗?

标签: node.js express


【解决方案1】:

我可以在这里看到两种可能的解决方案。

  1. links 添加到您的模块中。
  2. 安装您的模块。为此,请转到应用程序的根目录并键入:

npm install ./lib/storage

您可以在启动 app.js 时通过执行前面的命令“动态”安装模块。

【讨论】:

  • ad 1) 这些是真正的符号链接,这意味着我在保存文件后就可以更新我在 lib/ 中的原始模块,对吗? ad 2) 但是我每次开始都需要再做一次吗?
  • 确实如此。但不要忘记符号链接在某些 Windows 版本上不起作用。第二个选项可能是您的最佳选择。是的,你需要在每次启动时安装你的模块,你可以制作一个 bash 脚本来安装它们。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-04-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-25
  • 1970-01-01
  • 2021-01-14
相关资源
最近更新 更多