#node.js #svelte #rollup #sapper #node-mysql2
Вопрос:
Я создаю приложение в Svelte Sapper. У меня есть routes/account/login.js
маршрут API, где я пытаюсь использовать mysql2. Сам маршрут работает (я проверил у Почтальона), но как только я импортирую mysql, сервер выходит из строя и появляется ошибка:
[rollup-plugin-svelte] The following packages did not export their `package.json` file so we could not check the "svelte" field. If you had difficulties importing svelte components from a package, then please contact the author and ask them to export the package.json file.
- mysql2
import mysql from "mysql2/promise";
export async function post(req, res) {
//route test
const { login, password } = req.body;
res.end(`${login}, ${password}`);
}
Что я могу сделать, чтобы этот импорт работал?
Что я могу сделать, чтобы этот импорт работал?
В документации сапера ничего не говорится о том, нужно ли вам дополнительно что-то менять в конфигурации. https://sapper.svelte.dev/docs#Server_routes
Ответ №1:
Я нашел решение. Мне нужно было создать @lib
папку в src/node_modules
папке, и там файл, например. db.js
. В этом файле вместо import
вас нужно использовать require()
! а затем вам нужно экспортировать функцию, которая подключается к базе данных. а затем вы можете импортировать это в путь
//src/node_modules/@lib/db.js
const mysql = require("mysql2");
export async function connectToDatabase() {
return mysql.createConnection({
host: "localhost",
....
})
}
//routes/account/login.js
import { query } from "@lib/db";
export async function post(req, res) {
...
}