如何配置 vite/rollup 以从我的客户端代码中排除 firebase-admin?
How to configure vite/rollup to exclude firebase-admin from my clientside code?
我一直在愉快地使用这个 vite-plugin-ssr
和 firebase 函数,直到有一天 firebase-admin
放弃了我。在删除节点模块并重新安装依赖项之前,我的设置一直有效。似乎 vite
将 firebase-admin
与客户端捆绑在一起,即使在客户端代码中没有导入引用 firebase-admin
,仅在 .page.server.ts
文件中。如何指定 vite
或 rollup
不将 firebase-admin
捆绑到 dist/client
目录中?
我真的很感激一些指点...我已经在这个问题上花费了 24 小时以上,此时我正在考虑关闭 SSR,或者将文件复制到一个新项目。基本上我只想使用这个简单的堆栈进行干净的设置:
- firebase 函数
vite
+ SSR(使用vite-plugin-ssr
)
- preact 和 typescript
> vite build "--config" "vite-ssr.config.ts"
node_modules/@firebase/util/node_modules/tslib/tslib.es6.js'fast-crc32c' is imported by fast-crc32c?commonjs-external, but could not be resolved – treating it as an external dependency
transforming (2472)
✓ 2478 modules transformed.
'default' is not exported by node_modules/firebase/app/dist/index.esm.js, imported by node_modules/firebase-admin/node_modules/@firebase/database/dist/index.esm.js
file: /Users/mateh/github/control-me/web-app/node_modules/firebase-admin/node_modules/@firebase/database/dist/index.esm.js:1:7
1: import firebase from 'firebase/app';
^
我尝试过的事情:
- 更新到所有 firebase 相关依赖项的最新版本
- 尝试在 tsconfig 中启用
allowSyntheticDefaultImports
,但没有效果
- 手动将
node_modules
中的文件编辑为 import * from '@firebase/app'
。构建将以这种方式通过,但客户端将无法使用 fast-crc32c
模块。
- 已安装
fast-crc32c
模块无济于事,在 firebase-admin
代码的某处存在一个通用对象未定义错误,显然它并不意味着在客户端的浏览器中 运行 .
- 两个函数和客户端具有相同的依赖集。接下来,我尝试使用 rollup 作为别名,以便 only
firebase
安装在客户端 package.json 和 only firebase-admin
在服务器端函数中 package.json,问题仍然存在。
将此添加到我的 vite
配置中修复了它:
build: {
rollupOptions: {
external: ['firebase-admin'],
我一直在愉快地使用这个 vite-plugin-ssr
和 firebase 函数,直到有一天 firebase-admin
放弃了我。在删除节点模块并重新安装依赖项之前,我的设置一直有效。似乎 vite
将 firebase-admin
与客户端捆绑在一起,即使在客户端代码中没有导入引用 firebase-admin
,仅在 .page.server.ts
文件中。如何指定 vite
或 rollup
不将 firebase-admin
捆绑到 dist/client
目录中?
我真的很感激一些指点...我已经在这个问题上花费了 24 小时以上,此时我正在考虑关闭 SSR,或者将文件复制到一个新项目。基本上我只想使用这个简单的堆栈进行干净的设置:
- firebase 函数
vite
+ SSR(使用vite-plugin-ssr
)- preact 和 typescript
> vite build "--config" "vite-ssr.config.ts"
node_modules/@firebase/util/node_modules/tslib/tslib.es6.js'fast-crc32c' is imported by fast-crc32c?commonjs-external, but could not be resolved – treating it as an external dependency
transforming (2472)
✓ 2478 modules transformed.
'default' is not exported by node_modules/firebase/app/dist/index.esm.js, imported by node_modules/firebase-admin/node_modules/@firebase/database/dist/index.esm.js
file: /Users/mateh/github/control-me/web-app/node_modules/firebase-admin/node_modules/@firebase/database/dist/index.esm.js:1:7
1: import firebase from 'firebase/app';
^
我尝试过的事情:
- 更新到所有 firebase 相关依赖项的最新版本
- 尝试在 tsconfig 中启用
allowSyntheticDefaultImports
,但没有效果 - 手动将
node_modules
中的文件编辑为import * from '@firebase/app'
。构建将以这种方式通过,但客户端将无法使用fast-crc32c
模块。 - 已安装
fast-crc32c
模块无济于事,在firebase-admin
代码的某处存在一个通用对象未定义错误,显然它并不意味着在客户端的浏览器中 运行 . - 两个函数和客户端具有相同的依赖集。接下来,我尝试使用 rollup 作为别名,以便 only
firebase
安装在客户端 package.json 和 onlyfirebase-admin
在服务器端函数中 package.json,问题仍然存在。
将此添加到我的 vite
配置中修复了它:
build: {
rollupOptions: {
external: ['firebase-admin'],