8

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

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

var somelib = require('somelib');

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

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

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

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

4

2 回答 2

4

可能somelib没有在其中main定义文件package.json或引用不正确。如果somelib没有 amain但确实有 adirectories.lib那么你可以这样做require('somelib/thefile.js')

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

更新:js2coffeecoffeescript一样,我要和你一起做后者。

于 2011-06-24T06:59:18.800 回答
1

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

于 2011-06-24T05:19:04.097 回答