reactjs - Nextjs - 动态导入 - CSS 模块无法从 node_modules 内导入

标签 reactjs next.js react-css-modules

我正在努力解决这个问题。我正在使用built in CSS modules对于我在 Nextjs 中的组件。当我延迟加载具有 CSS 模块的组件时,出现错误 CSS 模块无法从 node_modules 内导入。

如果我将 ${asset.name} 替换为值按钮,即 dynamic(() => import(@preamp/assets/Button)),nextjs 将编译。

  1. 如果我不使用 CSS 模块,代码将正确执行。它会延迟加载动态组件。仅当我将文件添加到项目中时。
  2. 如果我硬编码它编译的导入路径。我仅在使用模板文字字符串时遇到此问题。

非常感谢任何帮助。

import React from 'react';
import dynamic from 'next/dynamic';

const asset = { name: 'Button' };
const NewComponent = dynamic(() => import(`~/assets/${asset.name}`), {
    ssr: false,
});

export default function index() {
    return (
    <div className="grid-container">
        <div className="grid-x grid-margin-x">
        <div className="cell medium-6 large-6">
            <NewComponent />
        </div>
        <div className="cell medium-6 large-6">12/6/8 cells</div>
        </div>
    </div>
    );
}

按钮.js

import React from 'react';
import styles from './Test.module.css';

export default function Index() {
  return <div className={styles['btn-primary']}>Test Div</div>;
}

编辑: 如果我将 Test.module.css 移动到另一个文件夹中,它将编译。我还没有看到任何文档或推理为什么 CSS 模块必须位于特定区域。

button.js 已更新

import React from 'react';
import styles from '~/test/Test.module.css'; // <-- Moved into a different folder

export default function Index() {
  return <div className={styles['btn-primary']}>Test Div</div>;
}

项目规范:

  "dependencies": {
    "classnames": "^2.3.1",
    "eslint-plugin-prettier": "^3.4.1",
    "eslint-plugin-react": "^7.27.0",
    "next": "^12.0.3",
    "next-transpile-modules": "^9.0.0",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "sass": "^1.43.4"
  },

使用节点 v14.17.3

最佳答案

只是想发布我的答案。如果要使用动态导入,则导入路径本身不能是动态的。我在这里添加了更多信息。

https://github.com/vercel/next.js/issues/31271

关于reactjs - Nextjs - 动态导入 - CSS 模块无法从 node_modules 内导入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69920148/

相关文章:

html - 创建 classList.toggle ('active' 后,您尝试应用 CSS,但它不起作用

reactjs - Eslint 与 React CSS 模块

reactjs - 安装时 React Router v4 参数会破坏单元测试内部

node.js - 类型错误 : Cannot read property 'map' of undefined in reactjs

reactjs - 即使类型正确, typescript 也会因类型错误而抛出错误

next.js - 在下一个 js 中使用 getStaticProps 获取 API 数据时为什么要显示加载屏幕?

javascript - 一个 Next.js 路由中的两个不同子域

css - 从 Javascript 更新 CSS 模块变量

javascript - React - 检查 Prop 是否存在

reactjs - 如何在 Material UI 菜单中使用 Next.js Link (next/link) 组件?