这是什么?
@brillout/vite-plugin-server-entry 做两件事:
- 生成服务器生产条目
dist/server/entry.js。 。 。 . - 自动导入.
维琪 财务报告和审定财务报表 电报 以您的名义自动使用和配置此插件: 您没有什么可做的, 您通常可以忽略此插件 .
手动导入
通常的文件 dist/server/entry.js 自动导入.
但这种自动导入与Yarn PnP,一些多克配置,以及某些出品配置不相通. 你会继续得到以下错误:
[@brillout/vite-plugin-server-entry][Wrong Usage] The server production entry is missing.
(Re-)build your app and try again. If you still get this error, then you need to manually
import the server production entry.
工作环路是手动导入 dist/server/entry.js 在服务器代码中 :
// server/index.js
// Add this at the beginning of your server entry, or elsewhere at server start
// before receiving HTTP requests.
if (process.env.NODE_ENV === 'production') {
await import('../dist/server/entry.js') // Or wherever the build directory is
}
// ...
// Your server code (Express.js, Hono, Cloudflare Worker, Vercel, ...)
// ...
[注] 导入路径可能不同 :
- 文件扩展名可能与
.js(例如:.dist/server/entry.mjs) (中文(简体) ).- 构建目录的命名和位置可能不同于
dist/(例如:.build/server/entry.js如果您或您的框架设置vite.config.js> 翻译:build.outDir改为build) (中文(简体) ).- import '../dist/server/entry.js + import '../build/server/entry.mjs
[注] 如果顶级
await,然后检查有条件导入的替代方法dist/server/entry.js仅生产 有条件的手动导入。 。 。 .
[注]
@brillout/vite-plugin-server-entry生成文件node_modules/@brillout/vite-plugin-server-entry/dist/runtime/autoImporter.js自动导入dist/server/entry.js。 。 。 .这个
node_modules/.../autoImporter.js文件是在构建时生成的。 因此,如果:
-
node_modules/目录不可变 (Yarn PnP):node_modules/.../autoImporter.js无法写入 .- 删除或重新安装
node_modules/之后 创建您的生产应用程序 :node_modules/.../autoImporter.js丢失.
- 比如你在当地建造,复制
dist/,然后运行$ npm install在这里.- 移动一些嵌入器配置
dist/,然后重新安装node_modules/。 。 。 .在这种情况下,您必须手动导入服务器条目 .
如果你没有使用Yarn PnP,你没有修改
node_modules/建成后,你不需要手动导入,你不应该继续得到The server production entry is missing如果你这样做,那么 提交错误报告。 。 。 .要学更多,看 如何运作。 。 。 .
如何运作
[注] 作为一个用户,你通常不需要阅读这个. 如果你有问题,请读一下 手动导入 通常已经足够了.
@brillout/vite-plugin-server-entry 做两件事:
- 生成 a 服务器生产条目,文档
dist/server/entry.js。 。 。 . - 生成 a 自动导入器,文档
node_modules/@brillout/vite-plugin-server-entry/dist/runtime/autoImporter.js。 。 。 .
这个 服务器生产条目 (单位:千美元)dist/server/entry.js) 使工具能够像 维琪 财务报告和审定财务报表 电报 将其生产条目合并为一个文件.
这个 自动导入器 文件( 编号node_modules/@brillout/vite-plugin-server-entry/dist/runtime/autoImporter.js自动导入 dist/server/entry.js,但需要手动操作:
// server/index.js
// Without the auto importer, you need to manually import dist/server/entry.js
if (process.env.NODE_ENV === 'production') {
await import('../dist/server/entry.js')
}
[注] 这个
autoImporter.js文件在内部生成node_modules/——不在构建目录中(dist/)——因为汽车进口商的整点是知道建设目录在哪里. 工具的运行时代码( 如 Telefunc) 生活在node_modules/无法知道构建目录的位置 。 汽车进口商以尽可能简单和最小的方式弥合这一缺口.
见 汽车进口商如何运作 更多信息.
何时使用
典型的使用例 @brillout/vite-plugin-server-entry 当服务器条目不是由Vite处理时.
例如,在下文中,维克用Vite没有经过处理的vanilla Node.js服务器:
- 维凯 > API >
renderPage()> 无+serverEntry.js - 维凯 > 整合 >
+server> 额外控制 >+serverEntry.js=>$ node server/index.js
[注] 这里的根本问题是用户的
server/index.js(未由Vite处理) 无法神奇地加载维克的Vite入道,也无法将Telefunc等工具的Vite入道——香草节点.js服务器需要以某种方式从Vite入道.
当Vite 处理服务器条目时 @brillout/vite-plugin-server-entry 毫无用处:使用Vite虚拟模块就更简单了,而且从根本上更可靠.
[注] 另一个特征是
@brillout/vite-plugin-server-entry即将各种工具的条目(如维克的条目和Telefunc的条目)捆绑在一个条目中.理想的情况是,今后(见
vitejs/ecosystem#19- 服务器输入注入),Vite 本地支持,而不是需要这样的工具@brillout/vite-plugin-server-entry. (这里的根本问题是:像Telefunc这样的工具如何将其条目注入维克或斯维尔特基特等Vite框架定义的服务器条目?)从短期来看,这可能是使用
@brillout/vite-plugin-server-entry尽管我们鼓励只用Vite来寻找一个更简单的解决方案(同时取消Vite团队来解决这个问题).