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. python 打包前三天日志

    日志格式 app-2019-07-24.log app-2019-07-24.1.log 该脚本适合一天之内有多个日志文件 # /usr/bin/python #-*- coding: utf-8 - ...

  2. 解决fiddler不能抓取firefox浏览器包的问题(转)

    转自:https://blog.csdn.net/jimmyandrushking/article/details/80819103

  3. nmon2influxdb+grafana:服务监控可视化部署

    在工作中,无论是定位线上问题,还是性能优化,都需要对前端.后台服务进行监控.而及时的获取监控数据,能更好的帮助技术人员排查定位问题. 前面的博客介绍过服务端监控工具:Nmon使用方法及利用easyNm ...

  4. json.dumps()包装中文字符串

    开发环境 系统: ubuntu18.04 系统编码: $LANG = en_US.UTF-8 python解释器版本: Python 3.6.7 乱码现场 使用 json.dumps() 将 dict ...

  5. angular js根据json文件动态生成路由状态

    项目上有一个新需求,就是需要根据json文件动态生成路由状态,查阅了一下资料,现在总结一下发出来: 首先项目用到的是angular的UI-路由,所以必须引入angular.js和angular-ui- ...

  6. sqlserver数据,将一行某一列字符串的值用“_”分割分别填充到这一行的其他列

    分割字符到列DECLARE @a VARCHAR(10)SET @a ='00G-2-1102'SELECT CHARINDEX('-',@a,CHARINDEX('-',@a))SELECT CHA ...

  7. [FreeRTOS]FreeRTOS使用

    转自:https://blog.csdn.net/zhzht19861011/article/details/49819109 FreeRTOS系列第1篇---为什么选择FreeRTOS? FreeR ...

  8. Eureka 中服务下线的几种方式

    原文:https://blog.csdn.net/qq_15071263/article/details/85276486#1_6 Eureka 中服务下线的几种方式1.直接停掉服务根据默认的策略,如 ...

  9. python的pandas库读取csv

    首先建立test.csv原始数据,内容如下 时间,地点 一月,北京 二月,上海 三月,广东 四月,深圳 五月,河南 六月,郑州 七月,新密 八月,大连 九月,盘锦 十月,沈阳 十一月,武汉 十二月,南 ...

  10. C# List<T>排序总结

    这里有很多种方法对List进行排序,本文总结了三种方法,但有多种实现. 1.对基础类型排序 方法一: 调用sort方法,如果需要降序,进行反转: List<int> list = new ...