我在尝试在某个文件中使用下划线模块时遇到了一个奇怪的错误,尽管我可以在同一个项目中的其他文件中使用它。我认为问题不在于下划线模块本身。
文件的开头如下:
...
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中不起作用。
有没有人遇到过类似的问题?有谁知道什么可能是错的以及如何解决它?
答案 0 :(得分:0)
考虑到您的架构的添加:您需要require()
您使用它的每个范围(在您的情况下,文件)中的模块。在这种情况下,添加var _ = require('下划线');到你的dbHelper.js
档案。
不用担心:Node.js维护一个 require cache ,它在内存中维护一个已加载模块的列表,以防止它每次遇到{{1}时都必须从磁盘重新加载同一模块的语句:它将在第一次加载时重用内存中的一个。