本地依赖项在 create-react-app 模块中不起作用,出现“找不到模块”

时间:2021-02-01 12:44:35

标签: create-react-app react-app-rewired

我有以下项目结构:

<块引用>
  • 项目
    • dao(一个库)
    • react(一个 create-react-app 模块)

在 'react' 模块 package.json 中,我添加了 'dao' 模块作为本地依赖:

<块引用>

"dao": "文件:../dao",

在'npm install'之后,添加一个指向本地磁盘'dao'完整路径的链接:

<块引用>

node_modules/dao -> /f/git/projects/dao/

'dao' 模块有以下导出:

<块引用>

"./AccountDao": "./src/AccountDao.js",

现在我正在尝试从 react/src/api 下的文件中导入 'dao/AccountDao',并收到此错误:

Module not found: Can't resolve 'dao/AccountDao' in 'F:\git\projects\react\src\api'

问题 1:为什么构建不在 react/node_modules 中寻找 'dao'?

为了解决这个问题,我添加了一个重新布线:

module.exports = function(config, env) {
    return Object.assign(config, override(
    babelInclude([
      path.resolve("src"),
      fs.realpathSync("node_modules/dao/src"),
    ]),
    addWebpackResolve({
      alias: {
        dao: fs.realpathSync("node_modules/dao/src")
      },
    })
  )(config, env));
}

但现在我收到以下错误:

<块引用>

未找到模块:您试图导入位于项目 src/ 目录之外的 F:\git\projects\dao\src/AccountDao。不支持 src/ 之外的相对导入。

问题二:为什么会报错?同样,如果 'dao' 包安装在 react/node_modules 中,为什么它不像任何其他依赖包那样处理

为了解决这个问题,我可以将根“projects”文件夹重命名为“node_modules”,然后我想当“相对导入”中包含字符串“node_modules”时(它将是 F:\git\node_modules\ dao\src/AccountDao) - 没有问题。

问题 3:将本地节点项目导入 create-react-app 项目的最佳方式是什么?

0 个答案:

没有答案