next.js - Next.js - 在文件中导入服务器端包同时包含服务器端和客户端功能?
问题描述
假设我有一个名为 utils.js 的文件,其中包含两个函数 s 和 c。s 是一个服务器端函数(在 /api 端点处理程序上调用),并使用 mongodb 包。c 是一个客户端函数(将被捆绑并发送到浏览器)。
使用 next build 编译应用程序时,会导致任何问题吗?webpack 是否知道仅捆绑文件/模块的一部分?(将服务器端函数和导入视为“死代码”,因为它们仅从服务器端代码调用)
谢谢
解决方案
如果您需要知道哪些功能绑定到客户端以及哪些功能绑定到服务器,有一种简单的方法可以了解这一点 → https://next-code-elimination.now.sh/
只需将文件的内容复制并粘贴到其中,您就会看到哪些代码被捆绑到客户端以及哪些代码被捆绑到服务器。如果您有导入,请确保将所有导入放在一个文件中,以便您了解它是如何工作的。
拇指规则是:
任何类似getServerSideProps
, getStaticProps
&的东西getStaticPaths
都将从捆绑的代码中删除。如果您从使用服务器端代码的文件中导入任何内容,fs
但未在上述 3 个函数中的任何一个中使用它,那么它将不会被删除(检查 Next Code Elimination Tool)并且会给您一个错误。
工具就是答案。我将我的文件复制粘贴到其中并立即找到答案。
推荐阅读
- r - 使用 vcd 包的卡方检验
- java - 在单独的线程中创建文件
- typescript - 如何在 TypeScript 中编辑全局类型?
- angular - TypeScript 要求将类型添加到键值
- python - 有没有一种方法可以让我延迟执行请求?
- coldfusion - 我可以使用 cfspreadsheet 更新现有模板中的数据而不会丢失其中的样式吗?
- database - 如果其他表为空,则在 mysql 中的 mRename 表中重命名表
- jquery - 输入值更改时我无法检测到事件
- javascript - 对齐圆圈和球没有弹跳
- c++ - 我想知道为什么`std::unique_ptr
foo (new int)' 是合法的,因为 `std::unique_ptr ` 要求输入参数类型应该是 `int`?