我正在为我的SvelteKit项目开发一个Jest API,运行时使用Bun,编程语言使用TypeScrip.我的Jest API包括从包含363个爸爸Jest 的文本文件中随机获取一行.为此,我显然不得不阅读这份文件.所以我实现了这个方法,它工作得很好……除了一个部分.文件读取器找不到该文件.我输入的文件位置是./jokes.txt,这正是它所在的位置.然而,文件阅读器表示就是找不到它.我认为这是因为我使用Bun.file来读取文件,因为Bun相对较新,所以它引起了问题,所以我try 了readFileSync,但也不起作用.

以下是我的代码:

import { readFileSync } from "fs";

import { db } from "$lib/db";
import { sql } from "drizzle-orm";
import { sqliteTable, integer, text } from 'drizzle-orm/sqlite-core';

export async function GET() {
  let file = readFileSync("./jokes.txt", "utf-8");

  const jokes = file.split("\n");

  const today = new Date();

  const jokecords = sqliteTable("jokecords", {
    id: integer("id").primaryKey(),
    joke: text("joke"),
    month: text("month"),
    day: text("day")
  });

  const matches = await db.select().from(jokecords).where(
    sql`month = ${today.getMonth().toString()} and day = ${today.getDay().toString()}`
  );

  let joke;

  if (matches.length > 0) {
    joke = matches[0];
  }
  else {
    joke = jokes[Math.floor(Math.random() * jokes.length)];
    await db.insert(jokecords).values({
      joke: joke,
      month: today.getMonth().toString(),
      day: today.getDay().toString()
    });
  }

  return {
    joke: joke
  }
}

这是我的文件 struct

.sveltekit
node_modules
src
  lib
    db.ts
  routes
    api
      +server.ts
      jokes.txt
      jokes-backup.txt
    +layout.svelte
    +page.svelte
  app.d.ts
  app.html
  app.pcss
static
.gitignore
.npmrc
bun.lockb
package.json
postcss.config.cjs
README.md
svelte.config.js
tailwind.config.cjs
tsconfig.json
vite.config.ts

推荐答案

readFileSync可以以一种未指定的方式运行,因为它取决于代码执行的相对路径,而不是您当前的文件.避免这种情况的最佳方法是始终将代码文件的位置与执行运行时进行比较,并进行解析,如下所示:

const path = require("path");

fs.readFileSync(path.resolve(__dirname, "./jokes.txt"), "utf-8")

Javascript相关问答推荐

容器如何更改默认插槽中子项的显示?

D3多线图显示1线而不是3线

Cookie中未保存会话数据

调用removeEvents不起作用

我创建了一个创建对象的函数,我希望从该函数创建的对象具有唯一的键.我怎么能做到这一点?

将内容大小设置为剩余可用空间,但如果需要,可在div上显示滚动条

类构造函数忽略Reaction Native中的可选字段,但在浏览器中按预期工作

try 使用PM2在AWS ubuntu服务器上运行 node 进程时出错

SPAN不会在点击时关闭模式,尽管它们可以发送日志(log)等

如何利用CSS中的隐藏元素实现平滑扩展和防止网格行间隙

在Odoo中如何以编程方式在POS中添加产品

如何使本地html页面在重新加载时保持当前可隐藏部分的打开状态?

JavaScript将字符串数字转换为整数

无法使用npm install安装react-dom、react和next

用Reaction-RT-Chart创建实时条形图

Angel Auth Guard-用户只有在未登录时才能访问登录页面,只有在登录时才能访问其他页面

在对象的嵌套数组中添加两个属性

使用JavaScript或PHP从div ID值创建锚标记和链接

使用重新 Select 和对象理解 Select 器备忘

我正在为我的单选按钮在HTML中设置一个值.使用Java脚本,我如何才能获得该值?