使用共享的 Mirage 服务器开发 Next.js 应用

当你准备好将你的 Mirage 服务器集中化并在开发和测试之间共享时,请按照以下步骤操作。

注意:目前,Mirage 只能在浏览器中运行,这意味着它不会模拟你的 Next.js 应用通过 getServerSideProps 等钩子进行的任何服务器端网络调用。

步骤 1:安装 Mirage

首先,确保你已将 Mirage 添加到你的项目中

# Using npm
npm install --save-dev miragejs

# Using Yarn
yarn add --dev miragejs

步骤 2:定义共享服务器

定义共享服务器的常见位置是mirage.js

// mirage.js
import { createServer, Model } from "miragejs"

export function makeServer({ environment = "test" } = {}) {
  let server = createServer({
    environment,

    models: {
      movie: Model,
    },

    seeds(server) {
      server.create("movie", { name: "Inception", year: 2010 })
      server.create("movie", { name: "Interstellar", year: 2014 })
      server.create("movie", { name: "Dunkirk", year: 2017 })
    },

    routes() {
      this.namespace = "api"

      this.get("/movies", (schema) => {
        return schema.movies.all()
      })
    },
  })

  return server
}

步骤 3:在开发环境中启动服务器

打开你的 Next.js 应用的初始化文件(pages/_app.js),导入你的makeServer 函数,并在开发环境中调用它

// pages/_app.js
import { makeServer } from "../mirage"

if (process.env.NODE_ENV === "development") {
  makeServer({ environment: "development" })
}

function MyApp({ Component, pageProps }) {
  return <Component {...pageProps} />
}

export default MyApp

现在,无论你的应用程序中的任何页面在开发环境中发出网络请求,Mirage 都会拦截该请求并使用你的服务器定义中的数据进行响应。

现在,你拥有了一个中心位置来定义和更新你的 Mirage 服务器,并在继续你的 Next.js 应用的本地开发时进行维护。