从/ src而不是node_modules

时间:2019-10-17 14:56:56

标签: reactjs module relative-path absolute-path

我通过如下所示的导入方式在我的项目中使用react rc-tree模块:

import Tree, { TreeNode } from 'rc-tree';

这很好。但是过了一会儿我想对rc-tree的源代码进行更改,因此我将源代码从github克隆到了我的./src目录中。即我现在在./src目录下有一个名为./tree的目录。如何调用该代码,而不是node_modules中的rc-tree?

我尝试了各种导入语句,但是没有用。

3 个答案:

答案 0 :(得分:1)

在根目录中添加.env文件并添加此行

NODE_PATH=src

现在导入

import Tree, { TreeNode } from 'tree';

答案 1 :(得分:1)

您应该尝试相对导入您的代码。 想一想您是否位于要导入所需软件包的路径src/component/childComponent/中,在这里必须使用src内部软件包的相对路径。

import Tree, { TreeNode } from '../../tree';

..表示您在当前路径内向后移动。 在此示例中,这意味着要上升两个目录(component和childComponent)。现在,您要在这里访问src目录,您应该写出路径的其余部分/tree

我看一下rc-tree包,发现它是用打字稿写的。如果您的应用不支持打字稿,则不能使用包的源代码,您应该先构建包,然后再导入build目录。

如果您的应用支持绝对路径,则可以轻松使用:

import Tree, { TreeNode } from 'src/tree';

答案 2 :(得分:0)

我无法获得这些建议,可能是我的错...所以我只是将整个rc-tree子目录从node_modules移到了源代码树下,并将其称为“ tree”。然后,我从node_modules / rc-tree到源代码树中的./tree建立了符号链接。

我只是导入Tree,TreeNodes等,就像我在使用模块一样,但实际上它是在./tree中调用代码的副本。

一切似乎都有效。唯一不好的是,由于代码现在位于./src下,因此linter会打印出许多有关该代码的警告。显然,这不是我的代码,我也不想听到它,但是我可以接受。