汇总“未解决的依赖项”和“缺少全局变量名称”错误,但没有引用特定的依赖项

Rww*_*wwL 6 javascript reactjs babeljs rollupjs

我正在尝试将 React 集成到使用 Rollup 的现有应用程序中,并尝试在此过程中升级到最新的 Babel 和 Rollup 版本。当 I 时yarn build,有关未解析的依赖项和缺少全局变量名称的错误/警告输出不会提供有关哪些依赖项是问题的一部分的更多信息:

(!) Unresolved dependencies
https://rollupjs.org/guide/en/#warning-treating-module-as-external-dependency
[object Object] (imported by commonjs-proxy:[object Object])
(!) Missing global variable name
Use output.globals to specify browser global variable names corresponding to external modules
[object Object] (guessing '_object_Object_')
created public/app.js in 12.1s
?  Done in 13.52s.
Run Code Online (Sandbox Code Playgroud)

所以,在生成的 app.js 中,它以

(function (_object_Object_) {
    'use strict';

    var _object_Object___default = 'default' in _object_Object_ ? _object_Object_['default'] : _object_Object_;
    // etc etc etc
}(_object_Object_));

Run Code Online (Sandbox Code Playgroud)

这是我的 rollup.config.js:

/**
 * Imports
 */
import resolve from '@rollup/plugin-node-resolve';
import commonjs from 'rollup-plugin-commonjs';
import babel from 'rollup-plugin-babel';
import uglify from 'rollup-plugin-uglify-es';
import json from 'rollup-plugin-json'
import eslint from 'rollup-plugin-eslint';
import filesize from 'rollup-plugin-filesize';
import progress from 'rollup-plugin-progress'
import visualizer from 'rollup-plugin-visualizer';


/**
 * Constants
 */
const production = !process.env.ROLLUP_WATCH;

/**
 * Configuration
 */
export default {
  input: 'client/src/main.jsx',
  output: {
    file: 'public/app.js',
    format: 'iife'
  },
  plugins: [
    progress(),
    eslint(),
    resolve({
      mainFields: ['main', 'module', 'browser'],
      extensions: ['.js', '.jsx', '.json'],
    }), // resolve dependencies from node_modules
    json(),
    commonjs({
      include: ['node_modules/**'],
      exclude: ['node_modules/process-es6/**'],
      namedExports: {
        'node_modules/react/index.js': [
          'Children',
          'Component',
          'PropTypes',
          'createElement',
        ],
        'node_modules/react-dom/index.js': ['render'],
      },
    }), // convert CommonJS modules to ES modules
    babel({
      exclude: ['node_modules/**'],
      presets: ['@babel/preset-env', '@babel/preset-react']
    }), // convert with Babel
    production && uglify(), // minify if not development
    !production && visualizer(),
    filesize(),
  ],
};

Run Code Online (Sandbox Code Playgroud)

这些是我devDependenciespackage.json

    "@babel/cli": "^7.7.5",
    "@babel/core": "^7.7.5",
    "@babel/plugin-external-helpers": "^7.7.4",
    "@babel/preset-env": "^7.7.6",
    "@babel/preset-react": "^7.7.4",
    "@rollup/plugin-node-resolve": "^6.0.0",
    "babel-preset-es2015": "^6.24.1",
    "babel-preset-es2015-rollup": "^3.0.0",
    "codacy-coverage": "^3.4.0",
    "eslint": "^6.0.1",
    "eslint-config-airbnb-base": "^13.1.0",
    "eslint-plugin-import": "^2.18.0",
    "eslint-plugin-react": "^7.17.0",
    "event-emitter": "^0.3.5",
    "mocha": "^6.1.4",
    "mocha-junit-reporter": "1.22.0",
    "mocha-multi-reporters": "^1.1.6",
    "nyc": "^14.1.1",
    "rollup": "^1.27.12",
    "rollup-plugin-babel": "^4.3.3",
    "rollup-plugin-commonjs": "^8.2.6",
    "rollup-plugin-eslint": "^4.0.0",
    "rollup-plugin-filesize": "5.0.1",
    "rollup-plugin-json": "^4.0.0",
    "rollup-plugin-progress": "^1.1.1",
    "rollup-plugin-uglify-es": "^0.0.1",
    "rollup-plugin-visualizer": "^3.3.0"
Run Code Online (Sandbox Code Playgroud)

我目前已将我的入口点 ( client/src/main.jsx) 和应用程序组件精简到最低限度:

import React from 'react'; // eslint-disable-line no-unused-vars
import ReactDOM from 'react-dom';
import App from './App.jsx';

const reactContainer = document.querySelector('#reactRoot');
ReactDOM.render(<App />, reactContainer);
Run Code Online (Sandbox Code Playgroud)
import React from 'react';

class App extends React.Component {
  render() { // eslint-disable-line class-methods-use-this
    return <h1>Here goes.</h1>;
  }
}

export default App;
Run Code Online (Sandbox Code Playgroud)

我在这里缺少什么?我已经按照输出中的链接(https://rollupjs.org/guide/en/#warning-treating-module-as-external-dependency)并按照指示非常仔细,还检查了其他各种 Rollup+React 存储库,但我发现没有一个使用最新版本的 Babel 或 Rollup。