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)

参考资料

https://www.npmjs.com/package/graphql-tag
https://github.com/victorvoid/dinoql/tree/master/examples/webpack
https://github.com/webpack/webpack/issues/6784
https://medium.com/@JakeXiao/window-is-undefined-in-umd-library-output-for-webpack4-858af1b881df

 
 
 
 

dinoql 使用nodejs 运行的几个问题的更多相关文章

  1. linux安装nodejs运行vue程序

    linux安装nodejs运行vue程序 1.与node官网下载安装包 https://nodejs.org/zh-cn/download/ 6.上传到服务器,并解压 tar -xvf node-v1 ...

  2. linux服务器安装nodejs运行环境

    安装nodejs运行环境 第一步:到node官网下载相应版本的安装包,将安装包放置服务器上,路径为 usr/local/node(可根据自身情况进行修改) 第二步:解压 ***.tar.xz格式文件需 ...

  3. nodejs运行机制

    有一天老大忽然问起我这个问题,nodejs运行机制 是怎样的?因自己对nodejs也不是很熟悉,就上网查了一下,得出结果如下: 1.简介 Node.js是一个事件驱动I/O服务端JavaScript环 ...

  4. 让你少走弯路的搭建树莓派的Net与NodeJS运行环境

      树莓派是当前最火的嵌入计算平台没有之一,树莓派可以给我们无数的想象,树莓派的高性能.低功耗.低成本.可扩展性(最新的树莓派原生支持WIFI和蓝牙,这功能太赞了)深受大家的喜爱.虽然树莓派到目前为止 ...

  5. nodejs运行前端项目

    有时候我们会创建一些小项目,只有几个简单html,没有引入一些前端框架,也没有使用webpack,那我们要如何让代码在我们本地跑起来呢? 当然是有很多种方法,IIS.wampserver等等好多都可以 ...

  6. windows8 使用docker创建第一个nodejs运行环境

    现在公司电脑使用的是windows8操作系统,如果想要运行docker,只能安装Docker ToolBox 关于安装Docker ToolBox,请查看文章<windows8安装docker( ...

  7. windows下搭建绿色nodejs运行环境

    无意中在网上看到NodeJS的文章,发现最近还挺火的,正好我也是做技术的,那就下载个玩玩呗,试试它的魅力,也来亲自感受下. 网上nodejs的环境的搭建到处都是,我这里就不说了,今天我想通过我自己的环 ...

  8. NodeJs运行服务器-day01

    //读取内置模块http,这个模块开发服务器用的var http =require('http'); var server=http.createServer(function(req,res){ r ...

  9. centos7安装nodejs运行环境及卸载

    一.安装1.进入官网下载最新版本https://nodejs.org/en/ 选择下载后上传或直接使用wget下载 wget https://nodejs.org/dist/v8.11.2/node- ...

随机推荐

  1. 【题解】Luogu P5279 [ZJOI2019]麻将

    原题传送门 希望这题不会让你对麻将的热爱消失殆尽 我们珂以统计每种牌出现的次数,不需要统计是第几张牌 判一副牌能不能和,类似这道题 对于这题: 设\(f[i][j][k][0/1]\)表示前\(i\) ...

  2. c# 更新web.config

    /// <summary> /// 添加和更新配置文件web.config的appSettings,缺点是会删除注释 /// </summary> /// <param ...

  3. dump net core lldb 分析

    原文https://www.cnblogs.com/calvinK/p/9274239.html centos7 lldb 调试netcore应用的内存泄漏和死循环示例(dump文件调试) 写个dem ...

  4. Tensorflow在python3.7版本的运行

    安装tensorflow pip install tensorflow==1.13.1 -i https://pypi.tuna.tsinghua.edu.cn/simple 可以在命令行 或者在py ...

  5. Python的bytes和str

    Python和C的字符串 在Python 3 中,bytes单独作为一个类型,不再和str类型混在一起.关于字符串和字节,我想先回顾下C/C++ 在C/C++中,字符串是由char数组构成,每个元素是 ...

  6. 两种方法实现在HTML页面加载完毕后运行JS

    JS默认方法: <script type=”text/javascript”> window.onload=function (){ /*代码区域*/ } </script> ...

  7. Gitlab配置webhooks实现自动化部署

    Gitlab 自动化部署 原理介绍 配置gitlab当push动作的时候,访问服务器上的一个链接比如www.shenke.group/hook.php hook.php里面写着一行代码,会让服务器gi ...

  8. 谈谈OAuth1,OAuth2异同

    ##一.写在前面在收集资料时,我查询和学习了许多介绍OAuth的文章,这些文章有好有坏,但大多是从个例出发.因此我想从官方文档出发,结合在stackoverflow上的一些讨论,一并整理一下.整理的内 ...

  9. git指令集合

    原网页:https://www.linuxidc.com/Linux/2018-04/151809.htm Git 是一个很强大的分布式版本控制系统.它不但适用于管理大型开源软件的源代码,管理私人的文 ...

  10. ireport(1.2.7)的IllegalAccessError异常

    IllegalAccessError异常: Exception in thread "main" java.lang.IllegalAccessError: tried to ac ...