我有一个节点包(让我们称之为my-package
(,目前看起来像下面的
src/
index.js
generators/
generate-stuff.js
index.js
看起来像下面的
module.exports={
"some": {
"json": "objects",
...
},
"other": {
"json": "things",
...
}
};
现在我可以通过执行以下在其他包中非常容易地导入此文件
const myPackage = require('my-package');
myPackage
将具有您在上看到的JSON的内容
然而,我真正想导入的是generate-stuff.js
中存在的一个函数(这个包的结构是继承的,我无法轻易更改它(
该文件看起来像下面的
module.exports = { functionIWantToExport(input1, input2){
return {
// do stuff with said inputs
};
}
}
然而,当我做类似的事情时
const functionIWant = require('my-package/generators/generate-stuff');
我得到以下失败。
Cannot find module 'my-package/generators/generate-stuff'
有什么办法可以从这个包中取出我需要的功能吗?
我可以在我的node_modules
中看到module.exports
在我需要的文件上
因此能够找出问题的根源。它与package.json
中的main
有关
在我的package.json
中有以下
"main": "src/index.js"
所以这就是为什么只做require('my-package');
就行了。但如果我想使用相对路径,它仍然来自src文件夹上方,所以我真正需要的是
const functionIWant = require('my-package/src/generators/generate-stuff');
这样做解决了我的问题