【问题标题】:Rollup.js unresolved dependenciesRollup.js 未解决的依赖项
【发布时间】:2017-05-20 14:52:27
【问题描述】:

我正在尝试将 rollup.js 合并到一个项目中。目前我在控制台中收到下面提供的警告(未解决的依赖项),我不确定为什么或如何解决它:

'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

这是需要 FileReader 和 https 的 test.js 脚本:

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

最后是执行创建包的 rollup.config.js 文件:

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));

【问题讨论】:

    标签: javascript dependencies rollupjs


    【解决方案1】:

    CLI 将生成更多信息警告 - 如果您更新配置文件以使用标准格式,那么您可以改用 rollup -c,它通常会为您提供帮助诊断问题的 URL。

    这是一个配置文件,其中包含消除这些警告的必要更改:

    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()
      ]
    };
    

    更新:“官方”Rollup 插件现在位于 npm 上的 @rollup 命名空间下,如果您安装上述两个版本,您将收到“npm WARN deprecated”消息,因此请改为安装较新的版本:

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

    然后像这样使用它们:

    import commonjs from '@rollup/plugin-commonjs';
    import { nodeResolve } from '@rollup/plugin-node-resolve';
    

    【讨论】:

    • 任何想法为什么我会收到一个错误说 https 不是基于上述定义的?这不是汇总错误,而是来自我尝试部署的环境的错误。
    • 很难说没有repro进行调查,对不起
    • 我添加了一个小更新,因为“官方”汇总插件现在位于 @rollup 命名空间下,但截至今天(2020 年 8 月)答案仍然有效
    • 插件的顺序很关键。任何更改都会产生惊人的错误
    • 在我的 child_process 导入中仍然出现 500 个内部服务器错误
    猜你喜欢
    • 2020-07-17
    • 2023-03-18
    • 2017-01-12
    • 1970-01-01
    • 2018-12-05
    • 2017-06-25
    • 1970-01-01
    • 2019-12-09
    • 1970-01-01
    相关资源
    最近更新 更多