Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

create-react-app can't minify parser.js #53

Open
tomclark opened this issue Jan 31, 2018 · 22 comments
Open

create-react-app can't minify parser.js #53

tomclark opened this issue Jan 31, 2018 · 22 comments

Comments

@tomclark
Copy link

Hi there,

Having a problem with the library building from create-react-app from v3.0.0 onwards. 2.12.1 is fine. On running npm run build, I get:

> react-scripts build

Creating an optimized production build...
Failed to compile.

Failed to minify the code from this file:

 	./node_modules/rss-parser/lib/parser.js:16

Read more here: http://bit.ly/2tRViJ9

Looks like an ES5/ES6 issue?

@rbren
Copy link
Owner

rbren commented Jan 31, 2018

Thanks for the report. We did switch to ES6 in 3.0.0

From the bit.ly link, it says "ask that the package be published pre-compiled". We have a pre-compiled version in dist/rss-parser.min.js. Are you able to import that file?

@tomclark
Copy link
Author

Was in a bit of a hurry, so I just downgraded to 2.12.1 which works absolutely fine and got me moving.

Will have a go at importing the file directly when I get a chance at the weekend and report back.

Thanks for the quick reply! 👍

@nikomc0
Copy link

nikomc0 commented Feb 3, 2018

I've got a noob question. Im not quite sure exactly how to properly import the min version.

@tomclark
Copy link
Author

tomclark commented Feb 3, 2018

What client technology are you using?

At the root of the project, run:

npm install --save rss-parser

It's then in node_modules/rss-parser/dist/rss-parser.min.js.

How and where you include that in your pages then depends what client framework you're using (i.e.React, Angular etc).

@nikomc0
Copy link

nikomc0 commented Feb 4, 2018

Im using react and getting "Parser is not a constructor" error.

screen shot 2018-02-03 at 6 13 40 pm

@rbren
Copy link
Owner

rbren commented Feb 4, 2018

It should be new RSSParser()

@n7best
Copy link

n7best commented Feb 14, 2018

@nikomc0 encounter the same issue while using create-react-app.

What I did to solve around is to import the pre-compiled version directly and use the RSSParser instead of Parse and I also have to declare eslint global namespace to avoid the create-react-app build errors.

/* global RSSParser */
import 'rss-parser/dist/rss-parser.min.js';

let parser = new RSSParser();

also, I tried to add module property to the package.json which pass the build but since two version has different parser naming, it wasn't working properly.

@rbren
Copy link
Owner

rbren commented Feb 14, 2018

Thanks @n7best. Any tips on how we can change rss-parser to better support create-react-app?

@JochenFromm
Copy link

Had the same issue for a Travis CI integration of an app created with create-react-app. The Travis log says

> react-scripts build
Creating an optimized production build...
Failed to compile.
Failed to minify the code from this file: 
 	./node_modules/rss-parser/lib/parser.js:16 

The create-react-app README argues the package should be published pre-compiled to ES5 (not ES6).

@rbren
Copy link
Owner

rbren commented Mar 12, 2018

I tried switching to babel-preset-env, but it gives the same result as babel-preset-2015

The code generated by babel (everything in ./dist/) is all ES5, per the README. So I'm not sure what the problem might be.

@Locheed
Copy link

Locheed commented Mar 19, 2018

Any news about a solution for this? Just noticed the same problem and came searching some answers.

@Locheed
Copy link

Locheed commented Mar 19, 2018

Yea CRA doesn't seem to transpile external dependencies to ES5. It has to be precompiled.
facebook/create-react-app#1125

workaround from @n7best works fine now.

@Ueland
Copy link

Ueland commented Apr 5, 2018

Jumping in on this thread after noticing the same issue, will use the workaround for now.

@gazpachu
Copy link

I will also use the workaround for now

@cgpomeroy
Copy link

Can someone explain further how to implement @n7best 's workaround?
I've tried the below with no success.

captura de pantalla de 2018-06-03 00-45-48

@415DomSmith
Copy link

415DomSmith commented Jul 8, 2018

@cgpomeroy

I was able to implement in my create-react-app.

I'm using Axios to fetch the page data.

const RSSParser = require('rss-parser');

getWiredFeed(){
    axios.get('https://www.wired.com/feed')
    .then((res) => {
      let parser = new RSSParser();
      parser.parseString(res.data, (err, feed)=> {
        this.setState({
          wiredItems: feed.items
        });
      });
    })
    .catch((err) => {
      console.log(err);
    })
  }

@udeshx
Copy link

udeshx commented Jul 23, 2018

Using the suggestion from @415DomSmith I got the example to work without the need for axios

const RSSParser = require('rss-parser');
const CORS_PROXY = "https://cors-anywhere.herokuapp.com/"

let parser = new RSSParser();
parser.parseURL(CORS_PROXY + 'https://www.reddit.com/.rss', function(err, feed) {
  console.log(feed.title);
  feed.items.forEach(function(entry) {
    console.log(entry.title + ':' + entry.link);
  })
})

@ranpox
Copy link

ranpox commented Sep 8, 2018

@cgpomeroy
Hi, have you found the way to solve it? Workaround from @n7best doesn't work for me.

@antoinedelp
Copy link

antoinedelp commented Oct 17, 2018

Hi @bobby-brennan, thanks for your great RSS Parser. Everything works fine in development, but I get the same "Failed to minify the code from this file: ./node_modules/rss-parser/lib/parser.js:16" error message when building my project.

The workaround (importying the minified version) is not working as I get this error message : RSSParser() is not a constructor.

By any chance, did you manage to identify what the issue is, or at least do you recommend a specific workaround to solve this issue?
Thanks!

@rbren
Copy link
Owner

rbren commented Oct 20, 2018

I would try using the file in dist/rss-parser.min.js. If you're using version 2.x, you should also use the README from that version, as the API has changed. In particular, RSSParser is not a constructor in 2.x - instead, you use RSSParser.parseUrl(...)

@anshulsinha1101
Copy link

@nikomc0 encounter the same issue while using create-react-app.

What I did to solve around is to import the pre-compiled version directly and use the RSSParser instead of Parse and I also have to declare eslint global namespace to avoid the create-react-app build errors.

/* global RSSParser */
import 'rss-parser/dist/rss-parser.min.js';

let parser = new RSSParser();

also, I tried to add module property to the package.json which pass the build but since two version has different parser naming, it wasn't working properly.

If i am using Your method i am getting a compile time error of

TS2304: Cannot find name 'RSSParser'

please help me to resolve this

@JohnnyHandy
Copy link

@415DomSmith solution worked for me! The only difference is that I had to use the cors proxy.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests