从节点包的较低级别导入



我有一个节点包(让我们称之为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');

这样做解决了我的问题

最新更新