0

我有一个节点包(让我们称之为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_modulesmodule.exports需要的文件

4

1 回答 1

0

所以能够找出我的问题的根源。它与mainin有关package.json

在我package.json有以下

"main": "src/index.js"

所以这就是为什么只做require('my-package');工作。但是如果我想使用相对路径,它仍然来自 src 文件夹上方,所以我真正需要的是

const functionIWant = require('my-package/src/generators/generate-stuff');

这样做解决了我的问题

于 2020-04-23T20:16:29.630 回答