首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在react + next js中位置没有定义错误?

在react + next js中位置没有定义错误?
EN

Stack Overflow用户
提问于 2021-01-21 01:04:51
回答 2查看 16.1K关注 0票数 20

我试图在hosted url (部署我的构建的地方).but基础上发送一些文本,我得到的是错误ReferenceError:位置未定义--是我的代码

https://codesandbox.io/s/laughing-mendel-pf54l?file=/pages/index.js

代码语言:javascript
复制
export const getStaticProps = async ({ preview = false, previewData = {} }) => {
  return {
    revalidate: 200,
    props: {
      //req.host
      name: location.hostname == "www.google.com" ? "Hello" : "ccccc"
    }
  };
};
EN

回答 2

Stack Overflow用户

发布于 2021-05-24 10:38:24

您能显示您的导入吗?因为它可能是从'next/client'导入路由器。

假设您正在使用基于功能的组件。

您需要按以下方式导入路由器:

代码语言:javascript
复制
import {useRouter} from "next/router";

在你的身体中:

代码语言:javascript
复制
const router = useRouter();
票数 54
EN

Stack Overflow用户

发布于 2021-01-21 01:20:57

getStaticProps()是在构建时在Node.js中执行的,它没有location全局对象-- Location是浏览器API的一部分。此外,由于代码是在构建时执行的,所以URL尚不清楚。

  1. getStaticProps更改为getServerSideProps (见文件)。这意味着在运行时对每个请求分别调用该函数。
  2. 从传递给contextgetServerSideProps对象中,取出Node.js 对象
  3. 在这个对象上,查找Host头。
代码语言:javascript
复制
export const getServerSideProps = async ({ req }) => {
  return {
    props: {
      name: req.headers.host === "www.google.com" ? "Hello" : "ccccc"
    }
  };
};

注:

  • 我还将==更改为===,因为一般建议使用后者。前者由于无声类型转换而产生一些意想不到的结果。
  • 我还删除了revalidate,因为这不适用于getServerSideProps()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65819812

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档