ホームページ  >  に質問  >  本文

ブラウザは JavaScript ファイルを HTML として読み取っているように見え、「Uncaught SyntaxError: Unexpected token '<'」を受け取ります。

<p>この未回答の質問と同様: ブラウザは React JS ファイルを JSX ではなく HTML として読み取るようです</p> <p>Next.js、React、Typescript を使用してプロジェクトを構築しました。 </p> <p>しかし今、<code>testScroll.js</code> のような Javascript ファイルを追加しようとしています。 </p> <pre class="brush:php;toolbar:false;">function init() { window.scrollTo(0, 1); window.scrollTo(0, -1); console.log('スクロール') } init()</pre> <p>このスクリプトは <code>public/js/testScroll.js</code> に保存しました。この <code>index.tsx</code> コンポーネントでそれを使用しようとします: </p> <pre class="brush:php;toolbar:false;">import { type NextPage } from "next"; import { Footer, Header, HomePageWrapper } from "~/componentsFromWebflow/homeComponents"; "next/script" からスクリプトをインポートします。 import Head from "next/head"; const ホーム: NextPage = () => { 戻る ( <> <頭> <meta charSet="utf-8" /> <title>エースイット</title> <メタ名="説明"コンテンツ="コンテンツ"/> <meta content="width=device-width,initial-scale=1" name="viewport" /> <link href="https://fonts.googleapis.com" rel="preconnect" /> <link href="https://fonts.gstatic.com" rel="preconnect"crossOrigin="anonymous" /> <link href="https://uploads-ssl.webflow.com/64296e49c388ed7c157635f0/64296e49c388eda6b076360c_Faivcon 32.svg" rel="ショートカット アイコン" type="image/x-icon" /> <link href="https://uploads-ssl.webflow.com/64296e49c388ed7c157635f0/64296e49c388edc81976360d_Faivcon 256.svg" rel="apple-touch-icon" /> <link rel="icon" href="/favicon.ico" /> </頭> <ヘッダー/> <HomePageWrapper /> <フッター/> <スクリプト src="./js/scrollTest.js" type="テキスト/javascript" Strategy="beforeInteractive" /> </> ); }; デフォルトのホームをエクスポート;</pre> <p><code>Script</code> タグを使用して考えられるすべての戦略を試しましたが、何も機能しません。</p> <p>問題は<strong>初めてページをロードすると次のエラーがスローされる</strong>: </p> <ブロック引用> <p>キャッチされない構文エラー:scrollTest.js:1:1</p> で予期しないトークン '<' が発生しました。 </blockquote> <p>もちろん、エクスプローラーの [ソース] タブを確認すると、次のようになります。 </p> <p><strong>しかし、数回リロードすると</strong> (通常は 1 回だけ)、<strong>動作し始め</strong> 、正しいコードが表示されます。 </p> <p>また、<code>middleware.ts</code>: </p> もあります。 <pre class="brush:php;toolbar:false;">import { getAuth, withClerkMiddleware } from "@clark/nextjs/server"; import { NextResponse } から "next/server"; インポート タイプ { NextRequest } から 'next/server' // ユーザーのサインインを必要としないパスを設定します const publicPaths = ['/', '/api/ストライプ-webhook*', '/api/clark-webhook*'] const isPublic = (パス: 文字列) => { return publicPaths.find(x => path.match(new RegExp(`^${x}$`.replace('*$', '($|/)'))) ) } デフォルトをエクスポート withClerkMiddleware((req: NextRequest) => { if (isPublic(req.nextUrl.pathname)) { NextResponse.next() を返す } console.log("ミドルウェア実行中"); const { userId } = getAuth(req); if (!userId) { console.log('userId が null、未定義、または空です'); const IndexUrl = 新しい URL('/', req.url) IndexUrl.searchParams.set('redirect_url', req.url) NextResponse.redirect(indexUrl) を返す } NextResponse.next() を返します。 }); // 静的ファイル上で実行されているミドルウェアを停止します import const config = { matcher: '/((?!_next/image|_next/static|favicon.ico).*)', };</pre> <p>エクスプローラーからCookieを削除するとエラーが表示されるようですが、原因と修正方法がまだわかりません。 </p> <p>何が起こったのでしょうか?その解決方法は何ですか? </p>
P粉520545753P粉520545753432日前600

全員に返信(1)返信します

  • P粉714780768

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

    "/js/scrollTest.js" (Script でマークされたパス) が無視されるパスの一部ではないため、このエラーが発生します。したがって、ミドルウェアに入ると、NextResponse.redirect(indexUrl) で HTML が返され、ブラウザには JavaScript ファイルが必要です。

    js/scrollTest.js を構成に追加するだけです:

    リーリー

    返事
    0
  • キャンセル返事