Rumah  >  Soal Jawab  >  teks badan

Penyemak imbas nampaknya membaca fail JavaScript sebagai HTML dan menerima "Ralat Syntax Tidak Dijangkit: Token tidak dijangka '<'"

<p>Serupa dengan soalan yang tidak dijawab ini: Penyemak imbas kelihatan membaca fail React JS sebagai HTML, bukan JSX</p> <p>Saya mempunyai projek yang dibina menggunakan Next.js, React dan Typescript. </p> <p>Tetapi sekarang saya cuba menambah beberapa fail Javascript seperti <code>testScroll.js</code>: </p> <pre class="brush:php;toolbar:false;">function init() { window.scrollTo(0, 1); window.scrollTo(0, -1); console.log('menatal') } init()</pre> <p>Saya menyimpan skrip ini di <code>public/js/testScroll.js</code>. Saya cuba menggunakannya pada komponen <code>index.tsx</code> <pre class="brush:php;toolbar:false;">import { type NextPage } dari "next"; import { Footer, Header, HomePageWrapper } daripada "~/componentsFromWebflow/homeComponents"; import Skrip daripada "seterusnya/skrip"; import Head dari "next/head"; const Laman Utama: NextPage = () => kembali ( <> <Kepala> <meta charSet="utf-8" <title>Ace-it</title> <nama meta="keterangan" kandungan="kandungan" < kandungan meta="lebar=lebar peranti, skala awal=1" <pautan href="https://fonts.googleapis.com" rel="prasambung" <pautan href="https://fonts.gstatic.com" rel="prasambung" <pautan href="https://uploads-ssl.webflow.com/64296e49c388ed7c157635f0/64296e49c388eda6b076360c_Faivcon%2032.svg"relcut="""" <pautan href="https://uploads-ssl.webflow.com/64296e49c388ed7c157635f0/64296e49c388edc81976360d_Faivcon%20256.svg"/ipple" <pautan rel="ikon" href="/favicon.ico" </Kepala> <Pengepala /> <HomePageWrapper /> <Footer /> <Skrip src="./js/scrollTest.js" type="teks/javascript" strategi="beforeInteractive" </> ); }; eksport lalai Laman Utama;</pre> <p>Saya telah mencuba setiap strategi yang mungkin dengan teg <kod>Skrip</code></p> <p>Masalahnya ialah<strong>apabila saya memuatkan halaman buat kali pertama ia menimbulkan ralat berikut</strong>:</p> <blockquote> <p>Ralat sintaks tidak ditangkap: Token tidak dijangka '<' di scrollTest.js:1:1</p> </blockquote> <p>Sudah tentu, jika saya menyemak tab Sumber pada Explorer, ia kelihatan seperti ini: </p> <p><strong>Tetapi selepas memuat semula beberapa kali</strong> (biasanya hanya sekali), ia <strong>mula berfungsi</strong> </p> <p>Selain itu, saya mempunyai <kod>perisian tengah.ts</code>:</p> <pre class="brush:php;toolbar:false;">import { getAuth, withClerkMiddleware } daripada "@clerk/nextjs/server"; import { NextResponse } daripada "next/server"; jenis import { NextRequest } daripada 'next/server' // Tetapkan laluan yang tidak memerlukan pengguna untuk dilog masuk const publicPaths = ['/', '/api/stripe-webhook*', '/api/clerk-webhook*'] const isPublic = (laluan: rentetan) => kembalikan publicPaths.find(x => path.match(RegExp baharu(`^${x}$`.replace('*$', '($|/)'))) ) } eksport lalai denganClerkMiddleware((req: NextRequest) => { if (isPublic(req.nextUrl.pathname)) { kembalikan NextResponse.next() } console.log("perisian tengah berjalan"); const {userId } = getAuth(req); jika (!userId) { console.log('userId is null, undefined or kosong'); const indexUrl = URL baharu('/', req.url) indexUrl.searchParams.set('redirect_url', req.url) kembalikan NextResponse.redirect(indexUrl) } kembalikan NextResponse.next(); }); // Hentikan Middleware berjalan pada fail statik export const config = { matcher: '/((?!_next/image|_next/static|favicon.ico).*)', };</pre> <p>Nampaknya jika saya memadamkan kuki daripada explorer, ralat muncul, tetapi masih tidak tahu mengapa dan bagaimana untuk membetulkannya. </p> <p>Apa yang berlaku dan bagaimana untuk membetulkannya? </p>
P粉520545753P粉520545753381 hari yang lalu550

membalas semua(1)saya akan balas

  • P粉714780768

    P粉7147807682023-09-06 00:11:37

    Anda mendapat ralat ini kerana "/js/scrollTest.js"Script 标记的路径)不是被忽略路径的一部分。因此,当您输入中间件时,您将返回带有 NextResponse.redirect(indexUrl) ialah HTML dan penyemak imbas memerlukan fail JavaScript.

    Anda hanya boleh menambah js/scrollTest.js pada konfigurasi:

    export const config = { matcher: "/((?!_next/image|_next/static|favicon.ico|js/scrollTest.js).*)" };
    

    balas
    0
  • Batalbalas