feather icon indicating copy to clipboard operation
feather copied to clipboard

Cannot read property toSvg

Open kodeine opened this issue 7 years ago • 16 comments

Getting the following error, any idea's?

image

kodeine avatar May 31 '18 02:05 kodeine

Could you make a CodePen to reproduce this error? Here's a Feather CodePen template to get you started: https://codepen.io/pen?template=WOJZdM

colebemis avatar May 31 '18 04:05 colebemis

I've had the same trouble when I tried to set the data-feather attribute dynamically in a php template:

<i data-feather="{icon}"></i>

Weird enough the dynamic replacement worked but all subsequent icons didn't render and throw this error.

christophlieck avatar Sep 07 '18 12:09 christophlieck

I have the same error here, but in my case i'm using Wordpress.

When i put a feather icon in the_content() section i'm getting this error.

abner-carvalho avatar Sep 21 '18 14:09 abner-carvalho

This happens when the attribute data-feather is empty or when the icon doesn't exist.. data-feather=""

This should be fixed, because an empty or invalid icon name causes all icons to be NOT displayed

wdebusschere avatar Sep 25 '18 10:09 wdebusschere

we just need an if statement before rendering? To check if there is that icon?

emilas44 avatar Aug 04 '19 20:08 emilas44

I have the same issue it's appear if you are not auth on your website and browse as guest but if you are auth as admin or members no more errors

Uncaught TypeError: Cannot read property 'toSvg' of undefined
    at feather.min.js:12
    at feather.min.js:12
    at Array.forEach (<anonymous>)
    at Object.n.default [as replace] (feather.min.js:12)
    at terms:368

gamefanpage avatar Oct 20 '19 02:10 gamefanpage

I have the same issue it's appear if you are not auth on your website and browse as guest ...

@gamefanpage Does it appear with empty icon names or always ?

Sent with GitHawk

moeenio avatar Oct 29 '19 06:10 moeenio

Hi, I encountered the same issue. What happened in my case was I mistyped one icon name (slider instead of sliders) but all the icons did not load. I must say it was kinda hard to debug.

To reproduce, here's the edited code from the codepen template above: https://codepen.io/kedomingo/pen/pogbLya

kedomingo avatar Jun 14 '20 10:06 kedomingo

This happens when you put in a non-existing icon name or you misspelt an icon name.

adigunsherif avatar Oct 10 '20 07:10 adigunsherif

If fixed this issue in ANGULAR 10

Here is my code :

<div class="card icon-card cursor-pointer text-center mb-2 mx-50" *ngFor="let dat of data | keyvalue">
     <div class="card-body">
         <div class="icon-wrapper">
              <i [data-feather]="dat.key"></i>
         </div>
       <p class="icon-name text-truncate mb-0 mt-1">{{ dat.key }}</p>
     </div>
</div>

component.ts

public  json = require('feather-icons/dist/icons.json');
public data;

ngOnInit() {
  this.data = this.json;
}

Here key element is square brackets I mean [data-feather].

parthdevloper avatar Nov 04 '20 17:11 parthdevloper

This happens when the attribute data-feather is empty or when the icon doesn't exist.. data-feather=""

This should be fixed, because an empty or invalid icon name causes all icons to be NOT displayed

This was the problem in my case.

ProteanCode avatar Feb 14 '21 14:02 ProteanCode

In my case it was icon name typo. Check if icon name exists.

kenanhodzic avatar Mar 21 '21 15:03 kenanhodzic

You can use [attr.data-feather]="dat.key" instaed of [data-feather]="dat.key". Angular is binding attributes data base on [attr.AttributeName].

ankitmovaliya avatar May 28 '21 11:05 ankitmovaliya

Same Problem here... Using python django with bootstrap...

checked typo, checked path...

the icon with the given address can be loaded by my browser but feather reports the same error...

replace.js:34 Uncaught TypeError: Cannot read properties of undefined (reading 'toSvg') at replaceElement (replace.js:34) at replace.js:19 at Array.forEach (<anonymous>) at Object.replace (replace.js:18) at 1:641

ToM-Korn avatar Oct 27 '21 11:10 ToM-Korn

My problem was I fired a multi-rename in my IDE, and I accidentally updated an icon's name to a non existing one. I figured it out when I added some console debugging to feather.js.

Add these lines to node_modules/feather-icons/dist/feather.js in the replaceElement() function, before the .toSvg() call:

console.log(_icons2.default[name]);
console.log(name);
console.log('-----');

of course delete them after you end debugging.

subdesign avatar Aug 09 '22 13:08 subdesign

The issue here is that's it's very hard to debug, if you have a lot of icons in your page. So far I use this code every time this issue appears, and then manually check against the website to see which icon is misspelled. Can we have a more graceful fallback that doesn't just ruin all the other icons.

$('[data-feather]').each(function (){console.log($(this).attr('data-feather'));});

alexseif avatar Aug 29 '22 19:08 alexseif