我正在学习nodejs,并做了一些在内存中创建数据库的练习,一切顺利。但是,当我改用 Postgres + Neon 时,我遇到了一些麻烦。
这是我的
server.js
文件:
import {fastify} from 'fastify'
import { DatabasePostgres } from './database-postgres.js'
const server = fastify()
const database = new DatabasePostgres()
server.post('/videos', async (request, reply) => {
const { title, description, duration} = request.body
await database.create({
title,
description,
duration,
})
console.log(database.list())
return reply.status(201).send()
})
server.get('/videos', async (request) => {
const search = request.query.search
const videos = await database.list(search)
return videos
})
server.put('/videos/:id', (request, reply) => {
const videoId = request.params.id
const { title, description, duration } = request.body
database.update(videoId, {
title,
description,
duration,
})
return reply.status(204).send()
})
server.delete('/videos/:id', (request, reply) => {
const videoId = request.params.id
database.delete(videoId)
return reply.status(204).send()
})
server.listen ({
port: process.env.PORT ?? 3333,
})
这是我的
app.js
:
import 'dotenv/config'
import postgres from 'postgres'
const postgres = require('postgres');
require('dotenv').config();
let { PGHOST, PGDATABASE, PGUSER, PGPASSWORD, ENDPOINT_ID } = process.env;
PGPASSWORD = decodeURIComponent(PGPASSWORD);
export const sql = postgres({
host: PGHOST,
database: PGDATABASE,
username: PGUSER,
password: PGPASSWORD,
port: 5432,
ssl: 'require',
connection: {
options: `project=${ENDPOINT_ID}`,
},
});
async function getPgVersion() {
const result = await sql`select version()`;
console.log(result);
}
getPgVersion();
这是错误:
文件:///D:/nodejs/app.js:4
const postgres = require('postgres');
^语法错误:标识符“postgres”已被声明
我希望有人能帮助我。谢谢。
我正在学习在 Youtube 上观看视频,但是我的 NodeJS 版本不同,Neon 也有更新,所以情况有点不同。
import
和 require
做同样的事情。
这意味着,您只需要其中一个。
为了进一步详细说明,请选择仅使用
import
或仅使用 require
,因为它们用于“加载”要使用的库。
如果您只想使用
import
,请确保您的 package.json 中有 "type": "module"
。
例如:在你的 package.json 文件中:
{
"type": "module",
// your other config
}
如果您没有 package.json 文件,请在根文件夹中运行
npm init
并按照说明进行操作。文件将被创建