如何解决使用TypeScript和Yarn导入“名称空间/模块”和导入“ @名称空间/模块”之间的区别?
在an unrelated question上,我们想知道Google Firebase支持的道格(Doug)是否会以不同的方式导入软件包,从而导致漏洞。
文档使用Typescript和npm来做到这一点:
import * as firebase from "firebase/app";
import "firebase/auth";
import "firebase/firestore";
我使用Type 3.9的Yarn和Lerna。它要求我使用命名空间/模块语法在导入的开头添加一个@,否则会抱怨不是URL友好字符。
我使用:
import firebase from "@firebase/app";
import "@firebase/auth";
import "@firebase/firestore";
这两个选项实际上是否有所不同,以至于第二个选项可能会因为第一个@ @触发在第一个选项中不会发生的错误?
谢谢
解决方法
两个不同的导入路径意味着两个不同的东西:
-
RichTextBox rtb = ... rtb.AppendText("Hello",FontStyle.Italic); rtb.AppendText("World",Color.Red); rtb.AppendText("!",FontStyle.Bold);
表示您正在导入import "@firebase/auth"
NPM软件包。这意味着程序包本身在NPM中发布为@firebase/auth
-
@firebase/auth
意味着您正在从import "firebase/auth"
包中导入auth
文件夹
看看它说的@firebase/auth
自述文件
此软件包不能直接使用,只能通过官方支持的firebase软件包使用。
这似乎支持您应该使用firebase
软件包并导入其子文件夹之一的文档。
输入您的other question:您实际上firebase
是哪个包裹?
因为如果您使用的是npm install
软件包 ,那么应该安装而不是firebase
(不是它自己的NPM模块)或{{1} },不适合直接使用。
如果您确实安装了firebase/auth
,这将解释为什么TypeScript在@firebase/auth
路径中找不到类型,因为它与您安装的包不同。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。