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

React(Vite)项目导入PGN文件报错,如何无需重命名解决?

Vite React项目直接导入PGN文件的解决方案

问题场景

使用npm create vite@latest创建的React项目中,导入.pgn格式文件时触发语法错误,但将文件重命名为.txt后即可正常导入。希望无需重命名,直接使用PGN格式。

代码示例

// React app created with Vite: npm create vite@latest
// import pgn from "./pgn.txt"; // 导入正常
import pgn from "./pgn.pgn"; // 报错:Uncaught SyntaxError: Unexpected string (at pgn.pgn?t=1720874180505&import:1:8)

// pgn.txt 和 pgn.pgn 内容完全一致

let games = await fetch(pgn).then((data) => data.text().then((data) => data));

function App() {
  return <>
    <h4>{games}</h4>
  </>;
}

export default App;

PGN文件内容

[Event "Troll Masters"]
[Site "Gausdal NOR"]
[Date "2001.01.05"]
[Round "1"]
[White "Edvardsen,R"]
[Black "Carlsen,Magnus"]
[Result "1/2-1/2"]
[WhiteElo "2055"]
[BlackElo "0"]
[ECO "D12"]

1.d4 Nf6 2.Nf3 d5 1/2-1/2

报错信息

Uncaught SyntaxError: Unexpected string (at pgn.pgn?t=1720874180505&import:1:8)

解决步骤

1. 配置Vite识别PGN文件类型

在项目根目录的vite.config.js(或vite.config.ts)中添加assetsInclude配置,将.pgn纳入静态资源处理范围:

import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

export default defineConfig({
  plugins: [react()],
  assetsInclude: ['**/*.pgn']
})

2. 重启开发服务器

修改配置后,关闭当前的Vite开发服务,重新执行npm run dev启动服务,配置即可生效。

原因说明

Vite默认仅处理常见的静态资源类型(如txt、png等),对于未识别的.pgn文件,会尝试将其当作JavaScript模块解析,但PGN内容不符合JS语法规范,因此抛出语法错误。通过添加assetsInclude配置,告诉Vite将PGN文件视为静态资源,导入时返回文件URL,与txt文件的处理逻辑一致,即可正常使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 23:06:06