dinoql 使用nodejs 运行的几个问题
  TEZNKK3IfmPf 2023年11月12日 18 0

dinoql 是一个很不错的javascript objects 查询处理方案,基于graphql,当前版本有点问题

node 环境运行

  • ReferenceError: window is not defined
    分析,实际上,查看webpack 的构建使用的是umd 方法打包,应该是可以使用的,但是使用npm 安装的运行有问题
    后边自己构建试试
解决方法:
a: 使用猴子补丁
还需要使用node 运行在require("dinoql") 之前,添加以下代码:
window=global||window
b: 在浏览器端运行
可以用parcel、webpack、browserify、rollup 等处理

c: 修改webpack 的构建
主要是webpack4 umd 构建的问题
修改如下:
output: {
    path: path.resolve(__dirname, 'dist'),
    library: 'dinoql',
    libraryTarget: 'umd',
    filename: 'dinoql.min.js',
    globalObject: 'typeof self !== \'undefined\' ? self : this',
  }

query 查询语法问题

基本上看官方demo 都是通过模板传递参数如下:

const users = dinoql(data)`
 requests {
   users {
     name
     id
   }
   friends {
      name
   }
 }

实际上参数传递也是一个函数调用,但是直接通过函数调用就有问题,如下

nction(e,n){if(1&n&&(e=t(e)),8&n)return e;if(4&n&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(t.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var o in e)
GraphQLError: Syntax Error: Expected Name, found }
    at v (/Users/dalong/mylearning/dinoql-demo/node_modules/dinoql/dist/dinoql.min.js:1:33268)
    at he (/Users/dalong/mylearning/dinoql-demo/node_modules/dinoql/dist/dinoql.min.js:1:52238)

解决方法,使用graphql-tag npm 包解决,实际上官方的webpack demo 也是使用此方法

const idQuery = gql `
query userids {
  requests {
    users {
      id
    }
  }
}
`
const userids = dinoql(data)(idQuery)
console.log(userids)
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月12日 0

暂无评论

TEZNKK3IfmPf