我讓 Postman 嘗試為在后端使用 express 的 vue 應用程式訪問我的 API。我將快速服務器設定為使用 sqlite3 并且服務器似乎正在運行,但是在嘗試通過 api 呼叫訪問其方法時,我只會遇到錯誤。
首先,我使用基本命令創建了 vue 應用程式,vue create .并添加了幾個額外的選項,例如 vuex、router、sass 等……然后我創建了一個檔案夾backend,其中包含 2 個檔案index.js和config.js. 以下是檔案:
index.js
const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");
const app = express();
const { db, port } = require("./config.js");
app.use(bodyParser.json());
app.use(
bodyParser.urlencoded({
extended: true,
})
);
app.use(cors());
const getUsers = (request, response) => {
console.log("ran /test");
db.query("SELECT * FROM wallets", (error, results) => {
if (error) {
throw error;
}
response.status(200).json(results.rows);
});
};
const registerUser = (request, response) => {
const { wallet } = request.body;
insertNewUser(wallet)
.then((results) => {
if (results) {
console.log("it worked");
}
response
.status(201)
.json({ status: "success", message: "Wallet added." });
})
.catch((error) => {
response.status(500).json({ status: "fail", message: error });
});
};
function insertNewUser(wallet) {
return db.query("INSERT INTO wallets (wallet) VALUES ($1)", [wallet]);
}
app.route("/test", getUsers);
app.route("/register", registerUser);
app.listen(port);
console.log("App is running on port " port);
配置.js
const sqlite3 = require("sqlite3");
const path = require("path");
let db = new sqlite3.Database(
path.resolve(__dirname, "test.db"),
sqlite3.OPEN_READWRITE,
(err) => {
if (err) {
console.error(err.message);
}
console.log("Connected to the database.");
}
);
module.exports = {
db,
port: "30005",
};
我backend使用 db sqlite 瀏覽器在目錄中創建了一個 sqlite db,如下圖所示:

這是我對test應該在資料庫中顯示錢包條目的函式發出郵遞員獲取請求時得到的

順便說一句,我正在運行這個服務器,yarn run start:server它是我package.json在根專案目錄中的檔案中的一個腳本。這就是我的scripts部分的package.json樣子:
"scripts": {
"serve": "vue-cli-service serve",
"build": "vue-cli-service build",
"lint": "vue-cli-service lint",
"start:server": "nodemon backend/index.js --ignore 'src/**/*.js'"
},
那么為什么我的獲取請求失敗了?
uj5u.com熱心網友回復:
有兩件事導致了這個問題。首先,而不是query我使用get. 第二個而不是app.route我使用的app.get. 正確運行/testapi 的代碼如下所示:
index.js
const express = require("express");
const bodyParser = require("body-parser");
const cors = require("cors");
const app = express();
const { db, port } = require("./config.js");
app.use(bodyParser.json());
app.use(
bodyParser.urlencoded({
extended: true,
})
);
app.use(cors());
const getUsers = (request, response) => {
console.log("ran /test");
db.get("SELECT * FROM wallets", (error, results) => {
if (error) {
throw error;
}
response.status(200).json(results.rows);
});
};
app.get("/test", getUsers);
app.listen(port);
console.log("App is running on port " port);
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/442951.html
下一篇:使用SFC在Vue中編輯表單
