import 'namespace/module' 和 import '@namespace/module' 与 TypeScript 和 Yarn 的区别?
Difference between import 'namespace/module' and import '@namespace/module' with TypeScript and Yarn?
在 我们想知道来自 Google Firebase 支持的 Doug,导入包的不同方式是否可能是错误的来源。
文档告诉我们这样做,使用 Typescript 和 npm:
import * as firebase from "firebase/app";
import "firebase/auth";
import "firebase/firestore";
我使用 Yarn 和 Lerna,以及 Typescript 3.9。它要求我使用 namespace/module 语法在导入的开头添加一个 @,否则它会抱怨没有 url 友好字符。
我使用:
import firebase from "@firebase/app";
import "@firebase/auth";
import "@firebase/firestore";
这两个选项是否实际上不同,以至于第二个选项可能会触发第一个选项不会发生的错误,仅仅因为这个@?
谢谢
两个不同的导入路径意味着两件事:
import "@firebase/auth"
表示您正在导入 @firebase/auth
NPM 包。这意味着包本身在 NPM 中发布为 @firebase/auth
import "firebase/auth"
表示您正在从 firebase
包 中导入 auth
文件夹
查看 @firebase/auth
自述文件说
This package is not intended for direct usage, and should only be used via the officially supported firebase package.
这似乎支持您应该使用 firebase
包并导入其子文件夹之一的文档。
回复你的 :你实际上 npm install
是哪个包裹?
因为如果你使用的是 firebase
包 那 是你应该安装的,而不是 firebase/auth
- 这不是它自己的 NPM 模块 -或 @firebase/auth
不能直接使用。
如果您确实安装了 @firebase/auth
,这将解释为什么 TypeScript 无法在 firebase/auth
路径中找到类型,因为那不是您安装的包。
在
文档告诉我们这样做,使用 Typescript 和 npm:
import * as firebase from "firebase/app";
import "firebase/auth";
import "firebase/firestore";
我使用 Yarn 和 Lerna,以及 Typescript 3.9。它要求我使用 namespace/module 语法在导入的开头添加一个 @,否则它会抱怨没有 url 友好字符。
我使用:
import firebase from "@firebase/app";
import "@firebase/auth";
import "@firebase/firestore";
这两个选项是否实际上不同,以至于第二个选项可能会触发第一个选项不会发生的错误,仅仅因为这个@?
谢谢
两个不同的导入路径意味着两件事:
import "@firebase/auth"
表示您正在导入@firebase/auth
NPM 包。这意味着包本身在 NPM 中发布为@firebase/auth
import "firebase/auth"
表示您正在从firebase
包 中导入
auth
文件夹
查看 @firebase/auth
自述文件说
This package is not intended for direct usage, and should only be used via the officially supported firebase package.
这似乎支持您应该使用 firebase
包并导入其子文件夹之一的文档。
回复你的 npm install
是哪个包裹?
因为如果你使用的是 firebase
包 那 是你应该安装的,而不是 firebase/auth
- 这不是它自己的 NPM 模块 -或 @firebase/auth
不能直接使用。
如果您确实安装了 @firebase/auth
,这将解释为什么 TypeScript 无法在 firebase/auth
路径中找到类型,因为那不是您安装的包。