2

我的 Angular5 Typescript 应用程序中有一个标准实用程序服务。我想与为该应用程序提供服务的节点应用程序共享它。

我找不到任何有关它的信息,但我认为问题如下:

  • 使用require()导入一个TS文件,如果生成的js文件在同一个地方
  • 忽略 @Injectable ,它是 Angular 服务上使用的装饰器。

我认为这是可能的,因为这是使用全栈 Javascript 的主要好处,但如何做到呢?

我在 NodeJs 中尝试过以下操作,但会引发错误:

const utilService = require('../../src/app/services/util/util.service');
4

3 回答 3

2

我将创建一个包含您的实用程序请求的私有 npm 包。

然后将其导入到您的角度项目和节点项目中。

于 2017-11-17T13:50:23.737 回答
1

我能想到的唯一方法是提供 util.service 的编译(ES2015 及更低版本)表示。这样做可能是构建脚本/管道的自动化部分。

或者,如果 util.service 不经常更改,请手动编译它

tsc ./src/app/services/util/util.service.ts --out ./src/app/services/util/util.service.js
于 2017-11-17T13:52:42.517 回答
1

你不能,打字稿它不是有效的javascript。

为此,您还必须编译节点代码,基本上有两种不同的打字稿配置,一种针对浏览器,另一种具有不同的入口点,针对节点。

如果您这样做,那么您将能够在后端和前端之间共享一些代码。尽管使用 @injectable() 装饰器的服务无法正常工作。为什么?没有任何注入器可用于处理您的依赖注入。

于 2017-11-17T13:55:31.173 回答