使用汇总导入 firebaseui
Import firebaseui with rollup
我正在尝试使用汇总导入 firebaseui 库。如果我将 firbaseui 包含在他们提供的 cdn 中,ui 可以正常加载:
<script src="https://www.gstatic.com/firebasejs/ui/4.5.0/firebase-ui-auth.js"></script>
<link type="text/css" rel="stylesheet" href="https://www.gstatic.com/firebasejs/ui/4.5.0/firebase-ui-auth.css" />
但是如果我改为尝试使用 import * as firebaseui from 'firebaseui'
导入它,我会在浏览器中收到以下错误:Uncaught TypeError: Failed to resolve module specifier "firebaseui". Relative references must start with either "/", "./", or "../".
我使用 rollup 的 plugin-node-resolve 和 plugin-commonjs 这个配置:
import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
export default {
// If using any exports from a symlinked project, uncomment the following:
// preserveSymlinks: true,
input: ["src/index.js"],
output: {
file: "public/index.js",
format: "es",
sourcemap: true,
},
plugins: [resolve(), commonjs()],
};
我认为这是为了处理像这样的裸模块错误,所以我不知道如何解决这个问题。
原来这个问题是由firebaseui在其ES模块构建中不正确地导入firebase的方式引起的。我提出了一个问题 here 但它被关闭了。解决方法是进入 node_modules
并找到 firebaseui (node_modules/firebaseui/dist/esm.js
) 的 ES 模块构建,并将第一行从 import * as firebase from 'firebase/app';
更改为 import firebase from 'firebase/app';
.
我正在尝试使用汇总导入 firebaseui 库。如果我将 firbaseui 包含在他们提供的 cdn 中,ui 可以正常加载:
<script src="https://www.gstatic.com/firebasejs/ui/4.5.0/firebase-ui-auth.js"></script>
<link type="text/css" rel="stylesheet" href="https://www.gstatic.com/firebasejs/ui/4.5.0/firebase-ui-auth.css" />
但是如果我改为尝试使用 import * as firebaseui from 'firebaseui'
导入它,我会在浏览器中收到以下错误:Uncaught TypeError: Failed to resolve module specifier "firebaseui". Relative references must start with either "/", "./", or "../".
我使用 rollup 的 plugin-node-resolve 和 plugin-commonjs 这个配置:
import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
export default {
// If using any exports from a symlinked project, uncomment the following:
// preserveSymlinks: true,
input: ["src/index.js"],
output: {
file: "public/index.js",
format: "es",
sourcemap: true,
},
plugins: [resolve(), commonjs()],
};
我认为这是为了处理像这样的裸模块错误,所以我不知道如何解决这个问题。
原来这个问题是由firebaseui在其ES模块构建中不正确地导入firebase的方式引起的。我提出了一个问题 here 但它被关闭了。解决方法是进入 node_modules
并找到 firebaseui (node_modules/firebaseui/dist/esm.js
) 的 ES 模块构建,并将第一行从 import * as firebase from 'firebase/app';
更改为 import firebase from 'firebase/app';
.