Npm 一个package.json文件中包含两个模块
我正在尝试创建一个独立于UI框架的插件。我不能做任何动态导入,所以我决定使用rollup构建它两次。但是现在我有一个问题,我不能分别导入不同的文件 我的结构如何: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
- 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'
}