“未找到模块”用于在私有软件包中进行绝对导入

时间:2019-04-24 18:03:15

标签: node.js typescript node-modules require

tl; dr:

如何从Typescript编译的nodejs包中通过绝对路径导入/请求?

长版:

这个问题可能是重复的,但是我已经搜索了很长时间了:

我有一个打字脚本模块,它已设置为从src-> lib编译,并设置了根路径:

tsconfig

"baseUrl": "src",
"outDir": "lib",

在我的源文件中,我很高兴使用本地导入:src / utils / immerReducer是本地文件

import { GetNamedReducer }  from 'utils/immerReducer';

可以正确解析。在我的编译代码中,我有

var immerReducer_1 = require("utils/immerReducer");

要发布,我将package.json复制到lib文件夹中。然后将其包装在包装中,并在内部使用(通过“纱线链接”)。不幸的是,在使用该应用程序时,我得到了:

Module not found: Error: Can't resolve 'utils/immerReducer'

据我所知,require指令不会搜索本地软件包

我试图以两种不同的方式解决此问题:

1)将导入路径更改为特定的文件路径

var immerReducer_1 = require("/utils/immerReducer");

这在编译后的代码中有效,不幸的是在原始源代码中:

import { GetNamedReducer }  from '/utils/immerReducer';

引发错误

2)将所有已编译的代码推送到node_modules

这只是...太过分了。首先,我经常需要直接在使用项目中引用特定文件(由于我无法弄清楚如何在名称空间中导出,并且在导入的代码中需要某种组织)。

import { GetNamedReducer }  from '@company/package/node_modules/utils/immerReducer'; // <-- I refuse to do this

我已经阅读了很多有关此投诉的问题,答案通常都是“无法解决”的。但是必须有一种干净利落的方法。

0 个答案:

没有答案