亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

匯總錯誤:node_modules/react/index.js 未導出“默認”

匯總錯誤:node_modules/react/index.js 未導出“默認”

一只斗牛犬 2022-07-01 16:33:52
我有一個項目,我使用 webpack 并想切換到 rollup.js,但我在插件 @rollup/plugin-commonjs 方面遇到了麻煩。我的 rollup.conf.jsimport resolve from '@rollup/plugin-node-resolve';import commonjs from '@rollup/plugin-commonjs';import babel from 'rollup-plugin-babel';import { terser } from 'rollup-plugin-terser';import nodePolyfills from 'rollup-plugin-node-polyfills';const config = {    input: 'site/templates/scripts/master.js',    output: [        {            file: 'site/templates/scripts/master.min.js',            format: 'cjs'        }    ],    plugins: [        nodePolyfills(),        resolve({            browser: true        }),        commonjs({            include: /node_modules/,            namedExports: {                'react': ["useState", "useEffect"],                '@apollo/client': ['ApolloProvider', 'ApolloClient', 'HttpLink', 'InMemoryCache', 'useQuery', 'gql'],                'styled-components': [ 'styled', 'css', 'ThemeProvider' ]            }        }),        babel({            babelrc: true,            exclude: 'node_modules/**'        }),        terser()    ]};export default config;我遇到的錯誤,不知道如何解決site/templates/scripts/master.js → site/templates/scripts/master.min.js...[!] Error: 'default' is not exported by node_modules/react/index.js, imported by site/templates/scripts/src/BgProductRecommendations/FredhopperProduct.jshttps://rollupjs.org/guide/en/#error-name-is-not-exported-by-modulesite/templates/scripts/src/BgProductRecommendations/FredhopperProduct.js (3:7)1: 'use strict';2: 3: import React from "react";          ^https://rollupjs.org/guide/en/#error-name-is-not-exported-by-module頁面并沒有真正的幫助,因為我已經在我的配置中使用了所有命名的導出。
查看完整描述

2 回答

?
滄海一幻覺

TA貢獻1824條經驗 獲得超5個贊

最后我發現了問題所在。我需要@rollup/plugin-replace插件來替換process.env.NODE_ENV


這是工作代碼

它還需要更多的命名出口。


import resolve from '@rollup/plugin-node-resolve';

import commonjs from '@rollup/plugin-commonjs';

import babel from 'rollup-plugin-babel';

import { terser } from 'rollup-plugin-terser';

import nodePolyfills from 'rollup-plugin-node-polyfills';

import replace from '@rollup/plugin-replace';


import React from 'react';

import ReactIs from 'react-is';

import ReactDOM from 'react-dom';


const config = {

    input: 'site/templates/scripts/master.js',

    output: [

        {

            file: 'site/templates/scripts/master.min.js',

            format: 'cjs'

        }

    ],

    plugins: [

        replace({

            "process.env.NODE_ENV": JSON.stringify("development")

        }),

        nodePolyfills(),

        resolve({

            browser: true

        }),

        commonjs({

            include: /node_modules/,

            namedExports: {

                'react-is': Object.keys(ReactIs),

                'react': Object.keys(React),

                'react-dom': Object.keys(ReactDOM),

                '@apollo/client': ['ApolloProvider', 'ApolloClient', 'HttpLink', 'InMemoryCache', 'useQuery', 'gql'],

                'styled-components': [ 'styled', 'css', 'ThemeProvider' ]

            }

        }),

        babel({

            babelrc: true,

            exclude: 'node_modules/**'

        }),

        terser()

    ]

};


export default config;



查看完整回答
反對 回復 2022-07-01
?
墨色風雨

TA貢獻1853條經驗 獲得超6個贊

從最新@rollup/plugin-commonjs版本開始,默認處理 namedExports。


也嘗試使用這個 rollup babel 配置,需要@babel/preset-react安裝模塊


     babel({

        exclude: "node_modules/**",

        presets: ["@babel/preset-react"],

        babelHelpers: "bundled",

      }),

自發布之日起,大多數匯總插件都已命名空間,因此請嘗試重新安裝@rollup/plugin-babel


查看完整回答
反對 回復 2022-07-01
  • 2 回答
  • 0 關注
  • 1385 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號