簡體   English   中英

Prisma 種子 - 無法讀取未定義的屬性(讀取“findFirst”)

[英]Prisma seed - cannot read properties of undefined (reading 'findFirst')

我在使用 prisma seed 時遇到了一個奇怪的問題,這是我以前從未遇到過的,並且很難理解是什么原因造成的。 該應用程序托管在 nextjs 全棧項目中。

我有以下棱鏡初始化腳本:

const prisma = new PrismaClient();

export default prisma;

在我的應用程序 ( next dev ) 中使用 prisma 時,一切正常並且正在執行查詢。

但是,當我嘗試運行種子腳本時,它失敗並顯示TypeError: Cannot read properties of undefined (reading 'findFirst')

這是種子腳本:

async function main() {
  const existingUser = await db.user.findFirst();

  // ...not relevant
}

main()
  .then(async () => await db.$disconnect())
  .catch(async e => {
    console.error(e);
    await db.$disconnect();
    process.exit(1);
  });

package.json棱鏡部分:

  "prisma": {
    "seed": "ts-node src/server/db/seed.ts",
    "schema": "src/server/db/schema.prisma"
  },

tsconfig.json ts 節點部分:

  "ts-node": {
    "require": ["tsconfig-paths/register"],
    "transpileOnly": true,
    "compilerOptions": {
      "module": "commonjs"
    }
  },

在種子腳本上打印 prisma 客戶端返回{} ,而不是我在開發模式下打印時可以看到的實際實例。

歡迎任何想法,謝謝!

調試幾個小時后,我終於找到了問題所在。 此代碼片段位於 prisma 運行時配置中:

  const dmmfModelKeys = Object.keys(client._baseDmmf.modelMap);
  const jsModelKeys = dmmfModelKeys.map(dmmfToJSModelName);
  const allKeys = [...new Set(dmmfModelKeys.concat(jsModelKeys))];

我已經看到,雖然前 2 個變量輸出結果,但創建一個new Set實際上返回一個空數組,而不是實際值。

默認情況下,NextJS 使用es5作為 tsconfig 中的目標。 然而,ES5 還沒有導致問題的Set構造。

升級到es2015解決了這個問題。

我只是期待某種錯誤,而不是無聲的失敗..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM