تایپاسکریپت - مسیر .well-known در نوکست ۳
من در دریافت مسیر /.well-known/apple-developer-merchantid-domain-association در Nuxt3 در محیط تولید مشکل دارم. من قصد دارم از میزبانی استاتیک (Cloudflare) استفاده کنم، اما وقتی پروژه را با npx nuxt generate مستقر میکنم، این مسیر همیشه 404 میدهد. من سعی کردهام پوشه/فایل را به دایرکتوری public اضافه کنم (404 میدهد) و همچنین محتویات فایل را بهعنوان یک مسیر سرور با پیکربندی prerender در Nitro ثبت کنم، اما باز هم موفق نشدم...
آزاردهنده است که اگر من از miniflare برای شبیهسازی محیط تولید به صورت محلی استفاده کنم، سپس npx nuxt build و npx nuxt preview را اجرا کنم، میتوانم به مسیر دسترسی پیدا کنم.
همچنین متوجه شدم که فایل /.output/public/_nuxt/entry-[hash].mjs به نظر نمیرسد که مسیر را همانطور که برای تمام داراییها/صفحات دیگر ثبت میکند، ثبت کند.
nuxt.config.ts
import { defineNuxtConfig } from 'nuxt'
// https://v3.nuxtjs.org/api/configuration/nuxt.config
export default defineNuxtConfig({
nitro: {
preset: 'cloudflare',
prerender: {
routes: ['/.well-known/apple-developer-merchantid-domain-association']
}
},
ssr: false,
target: 'static'
})
/server/routes/.well-known/apple-developer-merchantid-domain-association.ts
import { defineEventHandler } from 'h3'
export default defineEventHandler(() => "92324FSD2FFADAD124RTSDGSDF7B227073704964223A22")
پاسخ شماره ۱
شما میتوانید پوشهها/فایلها را در دایرکتوری static خود میزبانی کنید که به ریشه اپلیکیشن/سایت شما نگاشت میشود. من همین کار را انجام دادم و یک پوشه .well-known را برای مایکروسافت به این شکل میزبانی کردم /static/.well-known/microsoft-identity-association.json.
پاسخ شماره ۲
از آنجایی که راه حلی برای Nuxt پیدا نکردم، در نهایت به طور مشروط درخواست را در فایل index.js از Wrangler کلودفلر بازنویسی کردم. به این ترتیب، این روش از ورود entry-[hash].js در Nuxt عبور میکند و به جای آن منبع را به طور مستقیم دریافت میکند.
async function handleEvent(event) {
const { pathname } = new URL(event.request.url)
if(pathname === '/.well-known/apple-developer-merchantid-domain-association'){
const response = await getAssetFromKV(event, {
mapRequestToAsset: (req) =>
new Request(`${new URL(req.url).origin}/.well-known/apple-developer-merchantid-domain-association.html`, req),
})
return new Response(response.body, {...response,})
}
//
// rest of Nuxt's routing here
//
}
