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

Import error leading to build error in processColor export. #2738

Open
1 task done
juliencurro-aptar opened this issue Nov 20, 2024 · 0 comments
Open
1 task done

Import error leading to build error in processColor export. #2738

juliencurro-aptar opened this issue Nov 20, 2024 · 0 comments
Labels

Comments

@juliencurro-aptar
Copy link

Is there an existing issue for this?

  • I have searched the existing issues

Describe the issue

I am trying to build a design system package using vite, but I get the following error, is it a known issue ?

x Build failed in 1.15s
error during build:
../../node_modules/react-native-web/dist/exports/processColor/index.js (11:7): "default" is not exported by "../../node_modules/@react-native/normalize-colors/index.js", imported by "../../node_modules/react-native-web/dist/exports/processColor/index.js".
file: /Users/.../my_monorepo/node_modules/react-native-web/dist/exports/processColor/index.js:11:7

 9:  */
10: 
11: import normalizeColor from '@react-native/normalize-colors';
           ^
12: var processColor = color => {
13:   if (color === undefined || color === null) {

    at getRollupError (file:///Users/.../my_monorepo/node_modules/rollup/dist/es/shared/parseAst.js:396:41)
    ...

Here's my vite.config.ts :

import tsconfigPaths from 'vite-tsconfig-paths';
import svgr from 'vite-plugin-svgr';
import react from '@vitejs/plugin-react';
import dts from 'vite-plugin-dts';
import path from 'path';
import { Plugin, defineConfig } from 'vite';

const extensions = ['.web.js', '.web.ts', '.web.tsx', '.web.jsx', '.js', '.jsx', '.json', '.ts', '.tsx', '.mjs'];

export function reactNativeWeb(options: { babelPlugins: any[]; babelPresets: any[] }): Plugin {
	const plugin: Plugin = {
		name: 'vite:react-native-web',
		enforce: 'pre',
		config(_userConfig, env) {
			return {
				plugins: [
					react({
						jsxRuntime: 'automatic',
						jsxImportSource: 'nativewind',
						babel: {
							plugins: options.babelPlugins,
							presets: options.babelPresets,
						},
					}),
				],
				define: {
					// reanimated support
					'global.__x': {},
					_frameTimestamp: undefined,
					_WORKLET: false,
					__DEV__: `${env.mode === 'development'}`,
					'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV || env.mode),
				},
				optimizeDeps: {
					include: [/* 'react-native-reanimated',  */ 'nativewind', 'react-native-css-interop'],
					esbuildOptions: {
						jsx: 'transform',
						resolveExtensions: extensions,
						loader: {
							'.js': 'jsx',
						},
					},
				},
				resolve: {
					extensions: extensions,
					alias: {
						'react-native': 'react-native-web',
						'react-native-linear-gradient': 'react-native-web-linear-gradient',
					},
				},
			};
		},
	};

	return plugin;
}

export default defineConfig({
	build: {
		lib: {
			entry: path.resolve(__dirname, 'src/index.ts'),
			name: 'lib-DesignSystem',
			formats: ['es', 'umd'],
			fileName: format => `lib-designsystem.${format}.js`,
		},
		rollupOptions: {
			external: ['react', 'react-dom'],
			output: {
				globals: {
					react: 'React',
					'react-dom': 'ReactDOM',
				},
			},
		},
		commonjsOptions: {
			include: ['nativewind', 'react-native-css-interop'],
		},
	},
	plugins: [
		react(),
		tsconfigPaths(),
		svgr({ svgrOptions: { exportType: 'default', ref: true, svgo: false, titleProp: true }, include: '**/*.svg' }),
		reactNativeWeb({
			babelPlugins: [],
			babelPresets: [],
		}),
		dts(),
	],
});

And my package.json :

{
	"name": "lib",
	"packageManager": "[email protected]",
	"type": "module",
	"version": "1.0.0",
	"main": "src/index.ts",
	"types": "src/index.ts",
	"exports": {
		".": {
			"import": "./src/index.ts",
			"require": "./src/index.ts"
		}
	},
	"devDependencies": {
		"@babel/core": "^7.25.2",
		"@babel/preset-react": "^7.24.7",
		"@chromatic-com/storybook": "^1.9.0",
		"@react-native/babel-preset": "^0.75.3",
		"@storybook/addon-essentials": "^8.3.3",
		"@storybook/addon-interactions": "^8.3.3",
		"@storybook/addon-links": "^8.3.3",
		"@storybook/addon-onboarding": "^8.3.3",
		"@storybook/addon-react-native-web": "^0.0.25",
		"@storybook/blocks": "^8.3.3",
		"@storybook/builder-vite": "^8.3.3",
		"@storybook/react": "^8.3.3",
		"@storybook/react-vite": "^8.3.3",
		"@storybook/test": "^8.3.3",
		"@types/babel__core": "^7",
		"@types/react-dom": "^18.3.0",
		"@types/tailwindcss": "^3.1.0",
		"@vitejs/plugin-react": "^4.3.1",
		"autoprefixer": "^10.4.20",
		"babel-plugin-react-native-web": "^0.19.12",
		"enginetypes": "workspace:^1.0.0",
		"eslint": "8.57.0",
		"eslint-plugin-storybook": "^0.9.0",
		"postcss": "^8.4.47",
		"prop-types": "^15.8.1",
		"react-dom": "^18.3.1",
		"react-native-web": "^0.19.12",
		"storybook": "^8.3.3",
		"tailwindcss": "^3.4.14",
		"ts-node": "^10.9.2",
		"typescript": "^5.6.2",
		"vite-plugin-dts": "^4.2.2",
		"vite-plugin-svgr": "^4.2.0"
	},
	"scripts": {
		"build": "vite build",
		"storybook": "storybook dev -p 6006",
		"build-storybook": "storybook build",
		"tailwind": "tsc tailwind.config.ts"
	},
	"peerDependencies": {
		"nativewind": "4.1.23"
	},
	"dependencies": {
		"@babel/runtime": "^7.26.0",
		"i18next": "^23.11.3",
		"nativewind": "4.1.23",
		"react": "^18.3.1",
		"react-i18next": "14.1.1",
		"react-native-gesture-handler": "^2.19.0",
		"react-native-safe-area-context": "^4.11.0",
		"vite": "^5.4.7",
		"webpack": "^5.94.0"
	}
}

Expected behavior

No error :)

Steps to reproduce

Can't find what are the steps leading to that issue.

Test case

http://

Additional comments

No response

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

No branches or pull requests

1 participant