在node.js中包含一个.js文件

11

我正在尝试将此脚本包含在我的应用中:http://www.movable-type.co.uk/scripts/latlong.html

我已将其保存在名为lib/latlon.js的文件中,并尝试以以下方式进行包含:

require('./lib/latlon.js');

我应该如何引入像这样的JS库?

1个回答

13
首先,你应该查看 Node.js 的模块文档:http://nodejs.org/docs/v0.5.5/api/modules.html 你试图包含的脚本不是一个 Node.js 模块,因此需要对其进行几处更改。由于在 Node.js 的模块之间没有共享的全局作用域,你需要将想要访问的所有方法添加到 exports 对象中。如果你将以下代码添加到你的 latlon.js 文件中:
exports.LatLon = LatLon;

你应该可以这样访问LatLon函数:

var LatLonModule = require('./lib/latlon.js');
var latlongObj = new LatLonModule.LatLon(lat, lon, rad);

1
几乎:如果你设置了exports.LatLon,那么你可以通过require('./lib/latlon.js').LatLon获得它。要像你的例子中那样使用requirelatlon.js需要使用module.exports = LatLon导出自己。 - s4y
1
当然可以。但是,module.exports = LatLon 是完全可以的,或者跳过将模块保存到变量中并在一步中设置 varLatLon = require('./lib/latlon.js').LatLon — 这两种都是常见的模式。 - s4y
2
JavaScript并不在乎,函数与其他一切对象一样!在模块中:module.exports = LatLon;。在应用中:var LatLon = require('latlon');。之后:var someLatLon = new LatLon(param, param, param); - s4y
试着找出模块文件的位置。你是全局安装还是在项目中安装的?它是否在node_modules文件夹中? - Jørgen
我知道可以设置Node应该在哪些路径中查找模块,但如果您没有更改任何内容,您的代码应该是正确的。 - Jørgen
显示剩余8条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接