【问题标题】:How to set-up a Typescript class so my Browser AND Node app can use it?如何设置 Typescript 类以便我的浏览器和节点应用程序可以使用它?
【发布时间】:2016-11-12 13:13:23
【问题描述】:

我编写了一个 Web 应用程序,它只是 2 个独立的项目,每个项目位于不同的文件夹和它们自己独特的文件中。

client 部分是使用 SystemJS Typescript 1.8.10(根据 here)在 Angular 2 (RC-4) 中编写的。 server 部分是一个使用 Typescript 1.8.10(也是)的简单 NodeJS 应用程序。

如前所述,每个人都有自己的文件夹和自己独特的文件(包括自己的tsconfig.json 文件。)

一切正常。

但现在,我想在这两个项目中使用 MySharedClass {} 类。 我到底该怎么做?

当然,我可以在每个项目中放置一个源代码副本(即有两个源文件副本),它可以正常构建和运行——但这不是我们做事的方式。

我想创建一个名为“common”的“第三个”项目并将MySharedClass {} 放在那里,但我做不到

import {MyClass} from "../../../common/my-class";

在我的每个项目中,因为在我运行它时它似乎没有引用它。 (我无法让它在运行时引用该文件,因为我认为原因是您不能在项目范围之外引用该文件?!?)

四处研究,似乎没有关于如何做到这一点的解释 - 我是否遗漏了一些明显的东西?

请随时为我指明正确的方向,了解人们正在做什么来解决这个问题 - 我需要学习什么吗?我很确定我了解 ES6 模块系统(根据最近的 Typescript ES6 方式),因为我一直在项目中使用这种方法。我目前没有使用构建工具,因为我不需要额外的复杂性:我只是使用package.json 文件中提供的脚本(根据here)。我现在需要考虑使用Gulp 吗?

【问题讨论】:

  • " 创建一个名为 "common" 的 "第三个" 项目并将 MySharedClass {} 放在那里" 完全没问题。编译好的js的路径在哪里设置?
  • @Zen 是对的。这很可能是包含路径的问题。您还可以在两个项目中作为 node_modules 安装的专用包中移动所有常用代码。
  • @jobou 不确定。如果 OP 使用 Visual Studio,则客户端应用程序由 IIS 托管在 localhost 上,因此,项目根目录之外的任何内容都不能被引用。
  • 是的,但大多数时候你有一个 gulp(或其他任务运行器)脚本,它在服务器提供的 dist/build 文件夹中复制你的文件。所以在这种情况下,这将是包含路径的问题。但是在这里是的,我们可以假设 Web 服务器的根文档是客户端文件夹,并且公共依赖项在外部,因此 Web 服务器无法使用。

标签: typescript module


【解决方案1】:

谢谢。是的@Zen,这是包含路径的问题。我没有使用 Visual Studio,而是使用 Node 作为网络服务器(我使用的是Atom,但它一直挂着,所以它回到Notepad++ 我去......)。是的@jobou,您说得对,公共依赖项位于文件夹之外,因此无法由 Web 服务器提供服务。我已经解决了我的问题(正如@Zen 所说),通过创建第三个名为“common”的项目,当我构建其他每个项目时,我只运行一个简单的脚本,将必要的文件复制到适当的文件夹中,这样其他项目可以使用该类。

【讨论】:

    猜你喜欢
    • 2013-10-28
    • 2020-03-18
    • 2019-02-18
    • 1970-01-01
    • 2015-12-09
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 2018-10-23
    相关资源
    最近更新 更多