如何构建节点插件,以便它只能按名称而不是路径导入

How to build node addon, so that it can be imported only by name, and not path

当我通过创建标准 binding.gyp 和 运行 node-gyp build 构建节点附加组件时,addon.node库在子目录 build/{Release|Debug}/ 中创建。当我编写测试或其他 javascript 代码以使用此模块时,我必须给出库位置的显式路径

例如,

var addon = require('./build/Release/addon')

但是,我想通过仅指定模块名称并让节点的模块搜索库来做到这一点

var addon = require('addon')

如何实现?

我认为唯一的方法是设置 require() 并将模块放在 node_modules 文件夹中,或者将模块放在父目录之一的 node_modules 文件夹中.

Node 使用require() 方法,没有定义路径作为指标,在node_modules 目录中查找模块。除非它是一个本地模块。

文档中有详细说明 here

如果您不介意另一个依赖项,那么有一个模块可以解决这个问题。

https://www.npmjs.com/package/bindings

这将自动搜索所有可能的构建输出位置,包括调试和发布目录。