如何在Sapper中使用mysql2库?导入mysql2时服务器崩溃如何解决
解决方案
错误原因
这个报错是Rollup打包时将仅可在Node.js服务端运行的mysql2识别为需要适配Svelte的前端模块,扫描其package.json的svelte字段失败导致的,mysql2本身仅用于服务端,不需要适配Svelte前端规则。
修复步骤
- 第一步:修改项目根目录下的
rollup.config.js,找到服务端打包配置块,在external配置项中添加mysql2及其子路径,排除Rollup对该依赖的打包处理:
// rollup.config.js 服务端配置段示例 export default { // 客户端配置省略 server: { input: config.server.input(), output: config.server.output(), plugins: [/* 原有服务端插件保持不变 */], external: [ // 原有external配置项内容保留,新增以下两行 'mysql2', 'mysql2/promise' ] } }
- (可选)如果后续新增其他服务端依赖频繁触发同类报错,可以安装
rollup-plugin-node-externals插件自动排除所有node_modules中的服务端依赖,无需手动逐个添加:- 安装依赖:
npm install rollup-plugin-node-externals --save-dev - 修改服务端插件配置:
import nodeExternals from 'rollup-plugin-node-externals' server: { plugins: [ nodeExternals(), // 放在服务端插件列表最开头 // 原有其他插件保持不变 ] } - 安装依赖:
- 第二步:修改配置完成后重启Sapper开发服务器即可正常导入使用mysql2。
注意事项
不要在任何前端页面、Svelte组件中导入mysql2,仅可在后缀为.js/.ts的服务端API路由中导入该依赖。
内容的提问来源于stack exchange,提问作者Rafaucau
相关产品推荐
相关产品推荐

