如何解决为什么我不能将@bundled-es-modules/chai 别名为 chai?
通常在 NPM 中,您可以使用别名安装包,如下所示:
npm i alias@npm:real-package-name
作为参考,这里是别名功能的发布位置:https://npm.community/t/release-npm-6-9-0/5911
b7b54f2d1 413 #3 530 添加对包别名的支持。这允许将包安装在与 package.json 中列出的包名称不同的目录下,并添加新的依赖项类型以允许对注册表依赖项执行此操作。 (@zkat 50)
这允许您使用包的别名而不是其真实名称import
/require
:
import foo from 'alias'
但是,当我尝试使用 ESM 捆绑版本的 Chai 执行此操作时:
npm i --save-dev chai@npm:bundled-es-modules/chai
我收到错误消息“别名仅适用于注册表项”……但我根本找不到有关该错误实际含义的任何信息。这是完整的堆栈跟踪:
25 verbose stack Error: aliases only work for registry deps
25 verbose stack at fromAlias (/usr/local/lib/node_modules/npm/node_modules/npm-package-arg/npa.js:270:11)
25 verbose stack at resolve (/usr/local/lib/node_modules/npm/node_modules/npm-package-arg/npa.js:70:12)
25 verbose stack at npa (/usr/local/lib/node_modules/npm/node_modules/npm-package-arg/npa.js:52:10)
25 verbose stack at /usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:406:31
25 verbose stack at Array.map (<anonymous>)
25 verbose stack at Arborist.[add] (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:405:28)
25 verbose stack at Arborist.[applyUserRequests] (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:390:23)
25 verbose stack at Arborist.buildIdealTree (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/build-ideal-tree.js:207:37)
25 verbose stack at async Promise.all (index 1)
25 verbose stack at async Arborist.reify (/usr/local/lib/node_modules/npm/node_modules/@npmcli/arborist/lib/arborist/reify.js:123:5)
谁能解释这个错误是什么意思,为什么我不能给那个包加上别名(或者如果可以,我做错了什么)?
解决方法
我假设您想在安装过程中别名这个命名空间/范围的包 @bundled-es-modules/chai。
在这种情况下,将 @
符号前缀添加到安装命令的包 <name>
部分。例如
npm i --save-dev chai@npm:@bundled-es-modules/chai
^
npm-install 文档为 alias 命令提供了以下概要:
npm install <alias>@npm:<name>
本质上,范围包的 @
前缀是包 <name>
的一部分。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。