javascript - 需要另一个 JavaScript 文件中的 Javascript 文件

标签 javascript node.js

var FS = require('fs');
var Path = require('path');
var Jsonfile = require('jsonfile');

var search = function () {};

search.prototype.projectContainerDirPath = null;

/*
 * interface
 */
search.prototype.setPaths = function () {
  this.projectContainerDirPath =  Path.join(__dirname, '../projects');
};

module.exports.search = search;

这是我的 a.js 文件。在此文件中,我创建了一个名为 search 的对象,并向其原型(prototype)添加了一个变量和一个函数。最后我导出了搜索对象。

我有 b.js 文件,需要a.js 文件。 b.js 文件如下所示

var search = require("./search");
search.setPaths();

我在这里尝试的是在b.js中使用a.js的所有函数和变量。但是当运行 b.js 时,Node JS 返回以下错误

TypeError: search.setPaths is not a function

我尝试导出搜索的新对象。

var obj = new search();
module.exports.search = obj;

并再次在文件b.js中创建一个新的search对象

var search = require("./a");
var obj = new search();
search.setPaths();

但这两次尝试都失败了。我使用原型(prototype)的原因是,还有一些继承 search 对象原型(prototype)的对象。那么有什么方法可以导出这个 search 对象并在另一个 JavaScript 文件中使用它吗?

最佳答案

试试这个:

module.exports = search;

看起来“搜索函数”是构造函数,所以你最好使用第一个字符作为大写来区分这是一个函数还是构造函数,如下所示:

var Search = function() { ... }
var obj = new Search();

** 已更新 **

好的,我又看了一遍你的问题,发现了错误的地方。在 search.js 文件中:

var search = function() {};
module.exports = search;   // module.exports.search and this syntax is same

search 是一个构造函数,而不是一个对象。在 b.js 文件中,您使用的是 search 的原型(prototype)函数 setPaths,但 search 是一个函数对象,这意味着它连接的不是 Function.prototype 搜索原型(prototype)。如果你想直接从不同的文件使用原型(prototype)函数,你应该导出实例化的对象,而不是构造函数:

var search = function() {};
module.exports = new search();

这就是我所做的,并且 100% 有效:

// server.js
var search = function() {};
search.prototype.setPaths = function() { ... };
module.exports = new search;  // you can skip () if argument is empty

这是 b.js:

// b.js
var search = require("./search");
search.setPaths();

关于javascript - 需要另一个 JavaScript 文件中的 Javascript 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37894798/

相关文章:

javascript - 在 node.js 中调用多个异步函数的正确过程

javascript - 如何使用 ES6 类访问 Javascript 中的原型(prototype)属性?

javascript - NodeJS res.write 不起作用控制台工作

javascript - 悬停时连续/无限水平滚动

javascript - insertMany 不是函数

javascript - 即使在支持 websockets 的浏览器上,SockJS 也会模拟 websockets 吗?

javascript - mongoose forEach循环并一一更新文档

javascript - Sequelize + Sequelize 层次结构: How enforce a unique organization name per level?

javascript - 如何使用 jquery/AJAX 加载外部 Css 文件?

javascript - Node.js 中的继承