NodeJS所需模块在其他模块中不可用
我对NodeJS有点新鲜。 也许这只是它的工作方式,但可以肯定的是:
我的'index.js':
var fs = require('fs'); // do something with fs here var app = require('./app.js');
'app.js'
fs.readFile('/somedir/somefile.txt', 'utf8', function (err,data) { if (err) { return console.log(err); } console.log(data); });
然后我得到一个错误:
ReferenceError: fs is not defined
正如我读过的,这个“解决scheme”是在app.js中“重新需要”fs-module。 现在我明白的是fs模块被caching(任何模块,但是使用这个例子),所以Node仍然是非常快的。 我实际上并没有得到的是:“如果fs模块被caching了,那么它实际上还是有用的,为什么还要'重新需要'这个模块呢?
我会诚实的 这只是为了明白为什么。
每个文件都必须包含对模块的引用
index.js
var fs = require("fs"), other = require("./otherfile"); // you can now use `fs`
otherfile.js
var fs = require("fs"); // you can now use `fs` here
关于这一点的最好的部分之一是你不会locking在给定的文件中以某种方式命名variables。 每个文件都与lib中的所有其他文件相隔离,这是一件非常好的事情。
也知道如果你愿意的话,你可以只包含一个模块
var read = require("fs").readFile; read("myfile.txt", function(err, data) { if (error) { return throw error; } console.log(data); };
说明:
Node.js不鼓励使用全局variables; 因此,您不应该尝试实施依赖于全局variables的事情。
当你再次调用fs
模块的时候,它并不是真正的“重新需求”,而只是声明了一个指向caching模块的variables。
其他示例:
在这个答案中,我将详细介绍如何构造一个避免使用全局variables的简单应用程序。
我们可以忘记它,但是这是宣布它的根本:
var fs = require('fs');