javascript - Apollo 客户端 "Named export ' 删除“未找到”

标签 javascript vue.js nuxt.js apollo-client nuxtjs3

我正在尝试创建 apollo client Nuxt 3 的插件应用。它当前抛出一个关于名为 ts-invariant 的包的错误。 :

file:///Users/[my name]/Repositories/[project]/node_modules/@apollo/client/utilities/globals/fix-graphql.js:1
import { remove } from "ts-invariant/process/index.js";
         ^^^^^^
SyntaxError: Named export 'remove' not found. The requested module 'ts-invariant/process/index.js' is a CommonJS module, which may not support all module.exports as named exports.
CommonJS modules can always be imported via the default export, for example using:

import pkg from 'ts-invariant/process/index.js';
const { remove } = pkg;

    at ModuleJob._instantiate (node:internal/modules/esm/module_job:124:21)
    at async ModuleJob.run (node:internal/modules/esm/module_job:181:5)
    at async Promise.all (index 0)
    at async ESMLoader.import (node:internal/modules/esm/loader:281:24)
    at async __instantiateModule__ (file:///Users/[my name]/Repositories/[project]/.nuxt/dist/server/server.mjs:4550:3)
[vite dev] Error loading external "/Users/[my name]/Repositories/[project]/node_modules/@apollo/client/core/index.js".
  at file://./.nuxt/dist/server/server.mjs:3170:289  
  at async __instantiateModule__ (file://./.nuxt/dist/server/server.mjs:4550:3)
我觉得我对这个错误有足够的了解,知道它与 Nuxt 3 如何处理 ESM 有关,但我不能确定。
这是nuxt插件:plugins/apollo-client.js
import { defineNuxtPlugin } from "#app"
import { ApolloClient, InMemoryCache } from "@apollo/client/core"
import { DefaultApolloClient } from "@vue/apollo-composable"

export default defineNuxtPlugin((nuxtApp) => {
  const config = useRuntimeConfig()
  const apolloClient = new ApolloClient({
    uri: config.PUBLIC_API_ENDPOINT,
    cache: new InMemoryCache(),
  })
  nuxtApp.vueApp.provide(DefaultApolloClient, apolloClient)
})
在正常情况下,我可能会使用 nuxt-apollo 社区模块,但它目前是关于 nuxt 3 的。端口,所以它是一个插件。
这是我的插件依赖的一些文档:
https://v4.apollo.vuejs.org/guide-composable/setup.html#vue-3
https://v3.nuxtjs.org/docs/directory-structure/plugins

最佳答案

通过包含 @apollo/client 解决和 ts-invariant/process像这样进入nuxt构建transpile:

  // nuxt.config.js
  // ...
  build: {
    postcss: {
      postcssOptions: require('./postcss.config.js')
    },
    transpile: [
      '@apollo/client',
      'ts-invariant/process',
    ],
  },
  // ...

关于javascript - Apollo 客户端 "Named export ' 删除“未找到”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70615613/

相关文章:

javascript - 组织后端(Node)流程和使用部分流程的前端(Vue/Nuxt)的最佳方式

javascript - 在使用 Highcharts 打印之前调整图表大小

javascript - 在 Angular 项目中的数组上设置间隔

css - SASS 变量未在 VueJS 应用程序中呈现正确的结果

vue.js - 获取按钮的值(vuejs)

javascript - 如何使用 Tailwind 和 Vue.js 动态显示移动菜单?

javascript - 为什么用户必须单击两次才能启用 JQuery UI Slider 的键盘控制

javascript - 最快的通用 Levenshtein Javascript 实现

javascript - vue : A method that is triggered on selection of a year

javascript - Nuxtjs 和 Axios 上的计算属性?