【问题标题】:Help requiring a npm module in node.js在 node.js 中需要 npm 模块的帮助
【发布时间】:2011-09-21 18:19:56
【问题描述】:

我觉得我在这里遗漏了一些非常基本的东西......

所以我用npm install somelib 安装了一个npm 库。从我读过的内容来看,我应该能够简单地做一个

var somelib = require('somelib');

但它找不到任何东西。我的应用程序根目录下确实有一个node_modules 目录,但它似乎没有找到它。

我试过require.paths.push('node_modules'),但没有帮助。唯一似乎有效的是:

require.paths.unshift('.');
var somelib = require('node_modules/somelib/lib/somelib');

这让我觉得这比加载 npm 库实际需要做的工作要多得多。我在这里做错了什么?我认为在应用程序中安装模块意味着我不必过多地使用环境变量或路径?

【问题讨论】:

  • 你想安装什么?什么平台?
  • 是的,你是对的。你的第一个例子是它应该如何工作。你在使用 npm 1.0 吗?
  • somelib 可能没有名为somelib 的文件。也有可能是安装配置错误。
  • 实际上是js2coffee,但我只是尝试使用express,效果很好。我猜不是所有的 npm 模块都可以这样required 吗?不需要 npm 模块的全部内容吗?

标签: javascript node.js npm


【解决方案1】:

somelib 可能没有在其package.json 中定义main 文件,或者它被错误地引用。如果somelib 没有main 但有directories.lib,那么您可以改用require('somelib/thefile.js')

如果somelib 是用coffeescript 编写的,而您的应用不是,您需要先require('coffee-script')

更新:因为js2coffee 是coffeescript,我要和你一起做后者。

【讨论】:

  • 是否可以在单个 server.js 文件中要求所有 npm 模块......或者我们必须创建单独的文件......最佳实践是什么。 :)
【解决方案2】:

使用特定的模块名称而不是“somelib”可能会有所帮助...但请检查包的 package.json 文件。显示require.paths 并进行比较。阅读节点的module system

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 2020-06-26
    • 1970-01-01
    • 2018-12-05
    • 1970-01-01
    相关资源
    最近更新 更多