Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rollup.js unresolved dependencies

I am trying to incorporate rollup.js into a project. Currently I am getting the warnings provided below in the console (unresolved dependencies) and I am not sure why or how to fix it:

'fs' is imported by node_modules\filereader\FileReader.js, but could not be resolved – treating it as an external dependency

'fs' is imported by  commonjs-external:fs, but could not be resolved – treating it as an external dependency

preferring built-in module 'punycode' over local alternative at 'C:\Users\Ryan\OneDrive\Projects\Custom Coding\Zapier\Ryan Test\node_modules\punycode\punycode.js', pass 'preferBuiltins: false' to disable this behavior or 'preferBuiltins: true' to disable this warning

preferring built-in module 'punycode' over local alternative at 'C:\Users\Ryan\OneDrive\Projects\Custom Coding\Zapier\Ryan Test\node_modules\punycode\punycode.js', pass 'preferBuiltins: false' to disable this behavior or 'preferBuiltins: true' to disable this warning

Here is the test.js script requiring FileReader and https:

var FileReader = require('filereader');
var https = require('https');

Finally the rollup.config.js file which executes creating the bundle:

var rollup = require('rollup');

var commonjs = require('rollup-plugin-commonjs');
var nodeResolve = require('rollup-plugin-node-resolve');
var globals = require('rollup-plugin-node-globals');
var builtins = require('rollup-plugin-node-builtins');

// build bundle
rollup
  .rollup({
    entry: 'test.js',
    plugins: [
      nodeResolve(),
      commonjs(),
      globals(),
      builtins()
    ]
  })
  .then(bundle => bundle.write({
    dest: 'rollupBundle/bundle.js',
    format: 'cjs'
  }))
  .catch(err => console.log(err.stack));
like image 630
Jim M Avatar asked Jan 05 '17 22:01

Jim M


People also ask

What does unresolved dependency mean?

The assets that require assets from other composites are called dependent assets, while the assets that are required are called referenced assets. Deployer identifies missing referenced assets as follows: Unresolved dependencies are those dependencies that are present in the repository, but not in the deployment set.

Is rollup deprecated?

This package has been deprecated and is no longer maintained. Please use @rollup/plugin-node-resolve.

What is Rollupjs?

Rollup is a module bundler for JavaScript which compiles small pieces of code into something larger and more complex, such as a library or application. It uses the new standardized format for code modules included in the ES6 revision of JavaScript, instead of previous idiosyncratic solutions such as CommonJS and AMD.

Is rollup better than Webpack?

webpack and Rollup both require a config file specifying entry, output, loaders, plugins, transformations, etc. However, there's a slight difference: Rollup has node polyfills for import/export, but webpack doesn't. Rollup has support for relative paths in config, but webpack doesn't — which is why you use path.


1 Answers

The CLI will generate more informative warnings — if you update your config file to use the standard form, then you can use rollup -c instead and it will often give you a URL to help diagnose issues.

Here's a config file with the necessary changes to squelch those warnings:

import commonjs from 'rollup-plugin-commonjs';
import nodeResolve from 'rollup-plugin-node-resolve';
import globals from 'rollup-plugin-node-globals';
import builtins from 'rollup-plugin-node-builtins';

export default {
  entry: 'test.js',
  dest: 'rollupBundle/bundle.js',
  format: 'cjs',
  external: [ 'fs' ], // tells Rollup 'I know what I'm doing here'
  plugins: [
    nodeResolve({ preferBuiltins: false }), // or `true`
    commonjs(),
    globals(),
    builtins()
  ]
};

UPDATE: The "official" Rollup plugins are now under the @rollup namespace on npm, if you install the two versions mentioned above you will get an "npm WARN deprecated" message, so instead install the newer versions instead:

npm install @rollup/plugin-commonjs --save-dev
npm install @rollup/plugin-node-resolve --save-dev

then use them like this:

import commonjs from '@rollup/plugin-commonjs';
import { nodeResolve } from '@rollup/plugin-node-resolve';
like image 178
Rich Harris Avatar answered Sep 18 '22 15:09

Rich Harris