Node Noob here ...试验Exports和Require ...
我有一个名为GoogleHomePage.js的Javascript文件,其中包含以下代码:
var GoogleHomePage = function (){
module.exports.Home = function () {
var homepage = "http://www.google.com";
browser.get(homepage);
}
}
然后我想使用另一个名为FileB.js的文件中的require,如下所示:
var g = require("./GoogleHomePage.js");
g.Home();
运行g.Home()时,我得到Undefined ...但是,当我在调试器中查看g时,我可以看到它有一个名为Home的函数...
如果我在控制台窗口输入g.Home,它会显示功能代码......
如何让g.Home()执行?这是否发生,因为没有g对象,例如var x = new g()还是var x = new GoogleHomePage()?
答案 0 :(得分:1)
您正在将导出包装在一个函数中,但它无法正常工作。试试这个:
GoogleHomePage.js:
module.exports = function() {
var homepage = "http://www.google.com";
browser.get(homepage);
}
FileB.js
var googleHomePage = require("./GoogleHomePage.js");
googleHomePage();
因此直接导出函数 - 不需要将它包装在奇数var GoogleHomePage = function (){ ... }
构造中。
如果要在GoogleHomePage
中导出多个内容,可以导出具有如下属性的对象:
GoogleHomePage.js:
module.exports = {
Home: function() {
var homepage = "http://www.google.com";
browser.get(homepage);
},
SomethingElse: function() {
// ...
}
};
然后FileB.js看起来像:
var googleHomePage = require("./GoogleHomePage.js");
googleHomePage.Home();
或者你可以这样做:
var home = require("./GoogleHomePage.js").Home;
home();
答案 1 :(得分:1)
而不是
var GoogleHomePage = function (){
module.exports.Home = function () {
var homepage = "http://www.google.com";
browser.get(homepage);
}
}
你想要
module.exports = function () {
var homepage = "http://www.google.com";
browser.get(homepage);
}
module
是相关模块的本地变量,exports
是该对象的属性。函数GoogleHomePage
永远不会在您的代码中调用,因此您的作业永远不会运行。
当您需要模块时,只需执行
var g = require('./GoogleHomePage');
g();
.js
是不必要的。