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

Astro项目pages/[lang]目录使用import.meta.env报Unexpected "export"错误

Astro环境变量在动态路由页面报错"Unexpected 'export'"的解决方法

问题原因

在Astro的动态路由页面(pages/[lang])中,你将路由导出函数getStaticPaths放在了非导出的顶层代码(环境变量声明、lang变量计算等)之后。Astro的页面解析器对路由函数的位置有严格要求——它需要优先识别getStaticPaths这类构建时执行的路由逻辑,后续再处理页面渲染阶段的顶层代码。这种代码顺序会导致解析器抛出"Unexpected 'export'"错误。而components目录下的文件没有路由导出函数,所以不会触发这个问题。

解决方法

调整代码顺序,将getStaticPaths函数放在所有非导入的顶层代码即可:

---
import {getLangFromUrl, useTranslations} from '../../i18n/utils'
import {languages} from '../../i18n/ui'

// 先导出路由构建函数
export async function getStaticPaths() {
    return languages.map((lang) => {
        return {params: {lang}}
    })
}

// 再声明页面渲染时需要的变量
const DOMAIN = import.meta.env.PUBLIC_DOMAIN
const lang = getLangFromUrl(Astro.url)
const t = useTranslations(lang)
---
<!-- 页面模板内容 -->

如果你的DOMAIN变量需要在getStaticPaths中使用,也可以直接在函数内部访问环境变量:

---
import {getLangFromUrl, useTranslations} from '../../i18n/utils'
import {languages} from '../../i18n/ui'

export async function getStaticPaths() {
    // 在路由函数内部直接访问环境变量
    const DOMAIN = import.meta.env.PUBLIC_DOMAIN
    return languages.map((lang) => {
        return {params: {lang}}
    })
}

const lang = getLangFromUrl(Astro.url)
const t = useTranslations(lang)
---

内容的提问来源于stack exchange,提问作者Nghĩa Phạm

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:13:22