【发布时间】:2022-01-15 00:55:28
【问题描述】:
我创建了一个 npm 库,其中包含如下代码:
let _Buffer: typeof Buffer;
let _require: NodeRequire;
let _readFile: (path: string, callback: (err: (NodeJS.ErrnoException | null), data: Buffer) => void) => void;
try {
_Buffer = typeof Buffer !== undefined && Buffer;
_require = typeof require !== undefined && require;
if (_Buffer && _require)
_readFile = _require('fs').readFile;
}
catch {}
我已经设法使上述代码的一部分在其他项目中工作,例如对Buffer 的可选依赖。 require 的使用不是我以前尝试过的,这就是现在让我感到悲伤的原因。 Angular 决心尝试解决对fs 的依赖,无论我如何尝试隐藏它(包括像_require('f' + 's') 这样的傻事),导致这样的错误:
./node_modules/@tubular/astronomy/dist/fesm2015/index.js:3:300-4:1 - 错误:找不到模块:错误:无法解析“/Users/kshetline/”中的“fs” Programming_projects/svc-ng/node_modules/@tubular/astronomy/dist/fesm2015'
我最想做的是找到一种设计 npm 库的方法,所以这根本不是问题。
一个不太令人满意的解决方案是找到一种方法来告诉 Angular 编译器忽略这个特定的外部依赖项。然而,这对谷歌来说是一个困难的话题,因为搜索都提供了关于 Angular 依赖注入系统的信息,而不是关于这种类型的编译时依赖。
目标是让库在 Node.js 环境中使用时具有额外的 Node.js 功能,但在这些功能不可用时仍可在浏览器中流畅运行。
【问题讨论】:
标签: javascript node.js angular typescript