我的Relay/GraphQL片段包含两个不同的查询,这两个查询都返回相同类型的对象,并且两者之间返回的结果集之间经常存在一些重叠(这对我来说完全没问题).我在浏览器中看到以下警告:
Attempted to add an ID already in GraphQLSegment: client:client:15254944391:UmV2aWV3ZXI6MQ==
cra.dll.js:106483 Attempted to add noncontiguous index to GraphQLSegment: 52 to (0, 2)
cra.dll.js:106483 Attempted to add noncontiguous index to GraphQLSegment: 53 to (0, 2)
cra.dll.js:106483 Attempted to add noncontiguous index to GraphQLSegment: 54 to (0, 2)
cra.dll.js:106483 Attempted to add noncontiguous index to GraphQLSegment: 55 to (0, 2)
Run Code Online (Sandbox Code Playgroud)
有人可以确认这确实是由于我两次看到相同的Relay对象吗?如何使警告静音或至少进一步调试?
更新的问题,基于更简单的测试用例:
我有一个网站使用<svg>脚本生成的图形.图形中的东西充满了svg图案.到现在为止还挺好.
我现在<pattern>使用Javascript 将一个元素添加到图形中已有的模式中.我可以很容易地做到这一点,利用类似的方法createElementNS,setAttribute和appendChild.
SVG模式元素如下所示:
<defs>
<pattern id="stripes" width="6" height="6" patternUnits="userSpaceOnUse">
<svg:path d="M 0 0 L 10 0 L 10 1 L 0 1 Z" fill="red" width="6" height="6" id="stripepimage"></svg:path>
</pattern>
</defs>
Run Code Online (Sandbox Code Playgroud)
他们像这样使用:
<path d="..." fill="url(#stripes)" />
Run Code Online (Sandbox Code Playgroud)
现在:使用Javascript,或者浏览器控制台,我可以改变<path>的fill属性使用不同的图案.这工作正常,所有的人从一开始的页面模式,但它不是为后来添加上的图案.SVG代码本身很好; 将它保存在.svg中并在同一浏览器中打开它可以完美地显示新模式.
为什么不能使用动态生成的模式?
我tcpdump在这样的子进程中运行:
pcap_process = subprocess.Popen(['tcpdump', '-s 0', '-w -', 'tcp'],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
Run Code Online (Sandbox Code Playgroud)
该-w -参数是很重要的:它告诉tcpdump给打印结果.pcap文件stdout.
然后我继续使用访问网站urllib.open().完成此操作后,我想杀死tcpdump并将其打印的任何内容放入字符串中.我尝试过以下方法:
pcap_process.terminate()
result = pcap_process.stdout.read() # or readline(), etc.
Run Code Online (Sandbox Code Playgroud)
但是(除非我做错了),这不起作用; 我杀了这个过程,现在没什么可读的.如果我使用read()或communicate()在终止之前,我的脚本将只是坐在那里继续阅读,等待tcpdump完成(它不会).
有没有办法做到这一点(最好没有循环)?
dynamic ×1
graphql ×1
javascript ×1
python ×1
reactjs ×1
relayjs ×1
subprocess ×1
svg ×1
tcpdump ×1