You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sveltekit/mdsvex:如何获取导入Markdown文件的文本长度?

获取Markdown文件原始文本长度的解决方案

你当前通过import加载Markdown文件时,得到的是经过编译处理后的结果(通常是渲染后的HTML内容或组件对象),而非文件的原始文本字符串,所以content不是字符串类型,自然没有length属性。

要获取原始Markdown文本的长度,需要直接读取文件的原始内容,而非通过import加载。可以使用Node.js的fs/promises模块实现:

import { resolve } from 'path';
import { readFile } from 'fs/promises';
import { fileURLToPath } from 'url';

export const prerender = "auto";

export async function load({ params }) {
  // 获取当前文件的绝对路径,用于拼接md文件的完整路径
  const __filename = fileURLToPath(import.meta.url);
  const __dirname = resolve(__filename, '..');
  
  // 拼接Markdown文件的绝对路径
  const mdFilePath = resolve(__dirname, 'md-files', `${params.slug}.md`);
  
  // 读取原始Markdown文本
  const rawContent = await readFile(mdFilePath, 'utf-8');
  // 获取文本长度
  const contentLength = rawContent.length;

  // 如果仍然需要编译后的内容用于渲染,可保留原import逻辑
  const post = await import(`../md-files/${params.slug}.md`);
  const compiledContent = post.default;

  return {
    compiledContent,
    rawContent,
    contentLength
  };
}

说明:

  • readFile会读取文件的原始UTF-8文本,此时rawContent为字符串类型,可直接通过length获取文本长度。
  • 用fileURLToPath和resolve处理路径,避免相对路径在不同环境下的定位问题,确保能准确找到md-files目录下的目标文件。
  • 若同时需要编译后的内容用于页面渲染,可保留原import逻辑,两者互不冲突。

内容的提问来源于stack exchange,提问作者Wessi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 11:40:12