Nuxt 3 和 Postgresql:初始化之前无法访问“renderer$1”

问题描述 投票:0回答:1

我正在本地开发一个使用 Nuxt.js 3 并使用 Postgreql 构建的应用程序。我发现我遇到了以下错误消息:

Cannot access 'renderer$1' before initialization

1:没有 Prisma

./plugins/db.js

// import { Client } from 'pg'
import pg from 'pg';
const { Client } = pg;
const { Client } = pg;
const client = new Client({
  host: 'localhost',
  port: 5432,
  database: 'dbname',
  user: 'username',
  password: 'password',
})
client.connect();
export default client;

第 1 行已被注释掉,但为了记录,如果第 1 行未注释,则会抛出以下错误:

SyntaxError: The requested module './node_modules/pg/lib/index.js' does not provide an export named 'Client'
|第 2 行和第 3 行是此处答案提出的解决方案:Can I import the node-postgres module (pg) or is it only CommonJS?

这会引发

[nuxt] [request error] [unhandled] [500] Cannot access 'renderer$1' before initialization
错误。

请注意,如果我不使用 Nuxt 3 推荐的

defineNuxtPlugin
包装器,这可以工作,但只是一种。如果
db.js
如下:

import pg from 'pg';
const { Client } = pg;

const client = new Client({
  host: 'localhost',
  port: 5432,
  database: 'dbname',
  user: 'username',
  password: 'password',
})
client.connect();
export default client;

在这种情况下,我可以从应用程序中的数据库返回行。

./server/api/test.get.ts

import client from "~/plugins/db";

const rows = client.query('SELECT * from test');

export default defineEventHandler(async() => {
    return new Promise<any>((resolve) => {
        resolve(rows);
    });
});

但是,如果我这样做,其他地方还会出现其他问题:

  1. 我收到此警告:
    WARN  Plugin ./plugins/db.ts is not wrapped in defineNuxtPlugin. It is advised to wrap your plugins as in the future this may enable enhancements.
  2. 控制台错误:
    Uncaught ReferenceError: Buffer is not defined
  3. 我在应用程序中其他地方使用的 VueUse 实用程序不再起作用。

2。与 Prisma

我删除了旧的

./plugins/db.ts
代码并浏览了 Prisma 设置指南,结果却出现了相同的
Cannot access 'renderer$1' before initialization
错误:

./server/api/test.get.ts

//import { Pool } from 'pg'
import * as pg from 'pg'
const { Pool } = pg
import { PrismaPg } from '@prisma/adapter-pg'
import { PrismaClient } from '@prisma/client'

const connectionString = `${process.env.DATABASE_URL}`

const pool = new Pool({ connectionString })
const adapter = new PrismaPg(pool)
const prisma = new PrismaClient({ adapter })

export default defineEventHandler(async () => {
    return await prisma.notes.findMany();
});

知道可能出了什么问题或者如何解决此错误吗?

node.js postgresql prisma nuxt3.js pg
1个回答
0
投票

也遇到了同样的问题......我主要是由于

.env
文件中缺少API密钥造成的。 通过添加所需的 API 密钥已修复此问题。

我建议仔细检查日志;您可能会在那里找到一些提示。

© www.soinside.com 2019 - 2024. All rights reserved.