gpt4 book ai didi

node.js - typescript 忽略 NODE_PATH 变量

转载 作者:搜寻专家 更新时间:2023-10-30 20:59:12 25 4
gpt4 key购买 nike

NODE_PATH 环境变量可用于指定替代模块文件夹。这对于防止较长的相对路径很有用。想象一下以下文件夹结构:

/index.ts
/src/
---/folder1/
------/service.ts
---/folder2/
------/util.ts

如果我想在 util from folder2 中使用 folder1 中的服务,我需要执行 import { ServiceName } from "../folder1/service"。对于深度嵌套的文件夹,这可能会变得乏味。

当您将 NODE_PATH 环境变量设置为“./src”时,您可以从 “folder1/service” 导入相同的服务。如您所见,没有烦人的相对路径。

我已经用普通的 javascript 项目对此进行了测试,效果很好。但是当我使用 typescript 时,它会给出一个编译错误,告诉它找不到指定的模块,因为它似乎没有使用 NODE_PATH 值。

所以问题是,如何强制 typescript 编译器使用 NODE_PATH 值?

最佳答案

重要的是要注意您在那里使用的两个模块名称根本不同:一个是相对的 ("../folder1/service") 而一个不是 ("folder1/service")。 TypeScript 完全分开处理相对和非相对模块:看看 module resolution在文档中获取完整的详细信息。

现在解决这个问题的一种方法可能是将您的模块解析策略设置为“经典”,这应该意味着在当前目录中搜索“folder1/service”(一无所获),然后移动到上面的目录(匹配的地方)。这一般不会回答您的问题,因为您可以提出其他不起作用的 NODE_PATH 选项,并且它可能会破坏您依赖“Node ”样式模块解析的地方。原则上它会解决您的具体问题。

否则,目前没有“正确答案”可以很好地做到这一点。现在很快,虽然 TypeScript 2.0 将登陆(计划于 6 月底,我最后听说,今天),其中包括 path mappingvirtual root directories .这些是您可以添加到 tsconfig.json 的配置选项,它允许您任意将一个路径映射到另一个路径以进行模块查找。这应该让您将 NODE_PATH 映射复制到您的编译配置中,一切都应该正常工作。

我知道这现在不能解决您的问题,抱歉,但我希望它会在接下来的几周内很好地解决它,一旦 2.0 可用。

关于node.js - typescript 忽略 NODE_PATH 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38125937/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com