Node.js服务器读取文件的顺序?
我的node.js应用
程序中有2个js文件文件a定义了全局对象foo
在文件b中我可以参考foo
。
但如果文件 b 在文件 a 之前加载,则会发生错误。
我正在使用节点的 fs 模块来读取文件。我使用 readdir,然后对每个文件使用 forEach require 。在我的系统上,文件总是按字母顺序读取,所以从来没有任何问题。
我可以依赖按字母顺序读取这些文件吗?
I have 2 js files in my node.js app
File a defines global object foo
In file b I can refer to foo
.
But if file b is loaded before file a, then an error occurs.
I'm using node's fs module to read the files. I use readdir, and then forEach require on every file. On my system the files are always read alphabetically, so there is never any problem.
Can I depend on those files being read alphabetically?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
为了确定起见,您可以按名称对文件数组进行排序。
You can sort your array of files by name instead to be sure.
因为您正在处理文件数组,所以最好的办法是对数组进行排序,然后对其进行处理;仅当前一个文件完成后才开始读取新文件。
Because you're working with an array of files, you best bet is to sort the array then work through it; Only starting a new file read when the previous one has completed.
暂时忽略全局变量通常是一个坏主意的事实...:-)
如果您已经知道需要加载的文件路径,您可能希望使用如下结构:
用作:
然后再说一次,如果您只加载一旦在应用程序启动时使用这些文件,您应该使用 require()。
Ignoring for the moment the fact that global variables are usually a bad idea...:-)
If you already know the filepaths you need to load, you might wish to use a structure like:
Used as:
Then again, if you only load these files once at the start of your application, you should use require().