无法获取模块参考

时间:2017-07-27 16:43:28

标签: node.js npm

我在尝试在某个文件中使用下划线模块时遇到了一个奇怪的错误,尽管我可以在同一个项目中的其他文件中使用它。我认为问题不在于下划线模块本身。

文件的开头如下:

...
var moment = require('moment');
var _ = require('underscore');
...

然后,当我尝试在函数中使用下划线时,我收到错误

'‌ReferenceError: _ is not defined'

如果我尝试在同一个函数中使用其他模块,一切都运行良好,如果我在其他文件中使用下划线,它也可以正常工作,所以我不知道出了什么问题。

我尝试删除node_modules文件夹并运行npm update但问题仍然存在。

以下是文件夹结构,其中仅包含相关文件和文件夹:

.
├── app.js
├── bower.json
├── default.json
├── lib
│   ├── dbHelper.js
├── node_modules
├── routes
│   ├── api.js

在api.js下划线工作正常,而在dbHelper.js中不起作用。

有没有人遇到过类似的问题?有谁知道什么可能是错的以及如何解决它?

1 个答案:

答案 0 :(得分:0)

考虑到您的架构的添加:您需要require()您使用它的每个范围(在您的情况下,文件)中的模块。在这种情况下,添加var _ = require('下划线');到你的dbHelper.js档案。

不用担心:Node.js维护一个 require cache ,它在内存中维护一个已加载模块的列表,以防止它每次遇到{{1}时都必须从磁盘重新加载同一模块的语句:它将在第一次加载时重用内存中的一个。