Npm 一个package.json文件中包含两个模块

Npm 一个package.json文件中包含两个模块,npm,Npm,我正在尝试创建一个独立于UI框架的插件。我不能做任何动态导入,所以我决定使用rollup构建它两次。但是现在我有一个问题,我不能分别导入不同的文件 我的结构如何: - dist - quasar.js - vuetify.js 在my package.json中,我将dist作为main。但当我在应用程序中尝试以下操作时,我得到一个错误: import VueScanField from 'vue-scan-field/quasar' 错误: This dependency

我正在尝试创建一个独立于UI框架的插件。我不能做任何动态导入,所以我决定使用rollup构建它两次。但是现在我有一个问题,我不能分别导入不同的文件

我的结构如何:

- dist
    - quasar.js
    - vuetify.js
在my package.json中,我将
dist
作为main。但当我在应用程序中尝试以下操作时,我得到一个错误:

import VueScanField from 'vue-scan-field/quasar'
错误:

This dependency was not found:

* vue-scan-field/quasar in ./src/boot/vue-scan-field.ts
mypackage.json中的
main
变量可能有问题。这就是为什么它不能识别类星体的原因。有人知道吗

我尝试过子路径导出,但结果相同。我的配置如下所示:

  "exports": {
    "./quasar": "./dist/quasar.js",
    "./vuetify": "./dist/vuetify.js"
  },

但是我仍然会遇到同样的错误

尝试在
package.json
中填充
exports
字段。文档说明了您描述的确切用例:

子路径导出 当使用“导出”字段时,可以沿定义自定义子路径 通过将主入口点视为“.”来处理主入口点 子路径:

现在只有“导出”中定义的子路径可以由 消费者:

import submodule from 'es-module-package/submodule';
// Loads ./node_modules/es-module-package/src/submodule.js
而其他子路径将出错:

import submodule from 'es-module-package/private-module.js';
// Throws ERR_PACKAGE_PATH_NOT_EXPORTED
进一步资料:

演示场景 文件夹结构:

├── package // the package we want to distribute
│   ├── package.json
│   ├── submodule1.js
│   └── submodule2.js
├── main.js // consumer script
└── package.json
子模块内容:

/./package/submodule1.js
导出默认的“submodule1.js”
///包/子模块2.js
导出默认的“submodule2.js”
导出常量名称='第二个子模块'
/package/package.json
中,我为这些文件定义了子模块导出:

{
“姓名”:“我的包裹”,
“类型”:“模块”//启用ESM导入
“出口”:{
“/a”:“/submodule1.js”,
“/b”:“/submodule2.js”
}
}
然后,我使用
npm install./package
在consumer项目中安装了
/package
目录,该目录在
/package.json

{
“名称”:“消费者”,
“类型”:“模块”,
“依赖项”:{
“我的包”:“文件:包”
}
}
现在,我可以从
/main.js
导入子模块(默认导出和命名导出):

从“我的包/a”导入a
从“我的包”导入b,{name as bName}
控制台日志(a);
控制台日志(b);
console.log(bName);
其中打印:

submodule1.js
submodule2.js
second submodule
我可以通过显式地将root package export设置为
null
(或者干脆完全忽略它)来阻止导入基本包并只允许子模块:

{
“姓名”:“我的包裹”,
“main”:“main.js”,
“类型”:“模块”,
“出口”:{
“:null,//禁止导入根包
“/a”:“/submodule1.js”,
“/b”:“/submodule2.js”
}
}
这会导致此代码抛出错误

从“我的包”导入我的包

你好它看起来确实和我想要的一模一样,但不幸的是它给了我同样的错误。我编辑了帖子,我没有收到任何错误。我添加了一个示例来演示usageI,我认为它与typescript有关。总之,
“类型”:“模块”
起了很大的作用。对于这个问题。无论如何,我会接受这个答案!我添加了一个完整的示例来演示如何使用
exports
字段。
submodule1.js
submodule2.js
second submodule
node:internal/process/esm_loader:74
    internalBinding('errors').triggerUncaughtException(
                              ^

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: No "exports" main defined in /path/to/demo/node_modules/my-package/package.json imported from /path/to/demo/index.js
    at new NodeError (node:internal/errors:329:5)
    at throwExportsNotFound (node:internal/modules/esm/resolve:337:9)
    ...
    at link (node:internal/modules/esm/module_job:56:36) {
  code: 'ERR_PACKAGE_PATH_NOT_EXPORTED'
}