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