Typescript-fejl TP1001 ved oprettelse af en Web Worker i Next.js 15.0.2 med Stockfish skakmotor


Jeg arbejder på et Next.js 15.0.2-projekt med turbopack ved hjælp af TypeScript, og jeg integrerer Stockfish skakmotoren for at oprette en Web Worker på klientsiden.

Stockfish-biblioteket er gemt i public-mappen, og klienten henter det og opretter Workeren med følgende kode:

const stockfishPath = '/stockfish/stockfish-nnue-16-single.js';

const createStockfishWorker = () => {
  try {
    const worker = new Worker(stockfishPath);
    return worker;
  } catch (error) {
    throw Error(`Initialize stockfish worker failed: ${error}`);
  }
};

export default createStockfishWorker;

Stockfish-biblioteket indlæses og fungerer perfekt i klienten. Men når jeg kører projektet, får jeg følgende TypeScript-fejl i konsollen:

GET /analysis/w 200 in 2089ms
⚠ ./src/services/stockfish/createStockfishWorker.ts:7:20
error TP1001 new Worker("/stockfish/stockfish-nnue-16-single.js") is not statically analysable
   5 | const createStockfishWorker = () => {
   6 |   try {
>  7 |     const worker = new Worker(stockfishPath);
     |                    ^^^^^^^^^^^^^^^^^^^^^^^^^
   8 |     postMessage(['uci'], worker);
   9 |     return worker;
  10 |   } catch (error) {

Hvad jeg prøvede:

  • Webarbejderen bliver oprettet dynamisk, og den fungerer fint, så jeg ser ingen problemer med funktionaliteten.
  • Fejlmeddelelsen TP1001 ser ud til at være TypeScript, der klager over, at new Worker("/stockfish/stockfish-nnue-16-single.js") ikke kan analyseres statisk.
  • Jeg har prøvet at bruge // @ts-ignore for at undertrykke fejlen, men det ser ikke ud til at løse den.

Min opsætning:

  • Next.js version: 15.0.2
  • TypeScript version: ^5
  • Stockfish-bibliotek serveres fra public-mappen

Hvad jeg har brug for hjælp til:

  • Hvorfor viser TypeScript denne fejl, hvis workeren fungerer fint?
  • Hvordan kan jeg effektivt løse eller undertrykke denne fejl?
  • Er der en bedre måde at indlæse workers dynamisk i Next.js med TypeScript, som undgår denne fejl?

Enhver hjælp eller forslag vil blive meget værdsat!

Svar #1

Jeg havde det samme problem, da jeg brugte Next.js 15 med turbopack, at deaktivere turbopack løste det for mig.
Måske fungerer nogle eller alle arbejdstagere ikke med turbopack (jeg er ikke sikker)

package.json

{
  "scripts": {
    "dev": "next dev" // remove --turbopack option
  }
}

Svar #2

brug window.Worker i stedet for Worker

const worker = new window.Worker(stockfishPath);

Typescript-fejl TP1001 ved oprettelse af en Web Worker i Next.js 15.1.3

Relaterede artikler