- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
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 mapping和 virtual root directories .这些是您可以添加到 tsconfig.json 的配置选项,它允许您任意将一个路径映射到另一个路径以进行模块查找。这应该让您将 NODE_PATH 映射复制到您的编译配置中,一切都应该正常工作。
我知道这现在不能解决您的问题,抱歉,但我希望它会在接下来的几周内很好地解决它,一旦 2.0 可用。
关于node.js - typescript 忽略 NODE_PATH 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38125937/
我正在学习本教程,并且我来自 Windows 背景 https://github.com/bananaoomarang/isomorphic-redux 我可以知道这是什么意思吗? "dev": "N
我已经从 github 克隆了一个 react js 的 repo,并在 C:/Program Files/中安装了节点。当我从项目目录运行 npm start 命令时。我得到“NODE_PATH”未
我想要这个 ~ $ npm install express" 不会在我的主文件夹中安装express,而是在~/apps/node_modules中。 因此,我将这个 export NODE_PATH
我正在尝试在新服务器上运行我的 Node 应用程序,但我遇到了 NODE_PATH 环境变量的一些问题。该应用程序在我的本地计算机 (OSX Lion) 上运行良好,但在服务器 (Redhat lin
这是我的 package.json 脚本: "scripts": { "start": "NODE_PATH=$NODE_PATH:./shared node", "dev": "np
我想在 Node.js 中动态加载文件,这带来了一个问题,即 Node 在调用模块的 node_modules 中查找,而不是在文件的 node_modules 中查找正在加载。 我不想使用 requ
我在本地模块上遇到错误。 使用以下内容启动我的应用程序: "start": "NODE_PATH=\"$(pwd)\" node -r babel-register -r babel-polyfill
在开发过程中,我使用了 WebStorm node_path =. 环境变量。我在项目设置的启动中设置了一个变量。现在我想尝试在服务器上运行项目,但不知道如何在那里设置这个变量。帮忙解决问题! 最佳答
当我尝试使用带有此命令的 yeoman 构建项目时出现此错误。 npm install generator-gulp-webapp --global 错误: Yeoman Doctor Running
有没有办法在 Node 启动后设置 NODE_PATH 环境变量? 如果我这样做: async.series([ function export_NODE_PATH(cb){
我正在使用 hubot(特别是 hubot-hipchat)并想使用 https://github.com/scriby/asyncblock Node 模块。在 hubot 中导入/需要 Node
常规 CRA 环境变量(必须以 REACT_APP_ 开头)和 NODE_PATH 变量(用于避免必须使用相对路径进行导入,../../../foo 等)之间有什么区别? ) 根据我的测试,除非以 R
NODE_PATH 环境变量可用于指定替代模块文件夹。这对于防止较长的相对路径很有用。想象一下以下文件夹结构: /index.ts /src/ ---/folder1/ ------/service.
我们有一个 Node 项目,它不需要来自相对路径的我们自己的子模块,而是需要将 NODE_PATH 环境变量设置为 lib 来查找所有子模块。 我想在程序源代码中处理这个标准案例,但现在似乎不可能。
默认环境变量按照docs : NODE_PATH:/opt/nodejs/node8/node_modules/:/opt/nodejs/node_modules:$LAMBDA_RUNTIME_DI
问题 我可以从 Node/Gulp 中运行单元测试吗?这些测试的 NODE_PATH 与从环境继承的 NODE_PATH 不同? 问题 我有一个项目正在基于 Rhino 的应用程序中运行,其中 req
这是我的架构: . ├── app.js ├── package-lock.json ├── package.json └── src ├── controller │ └── i
是否可以在 Heroku/Foreman 中添加 NODE_PATH,我似乎在文档中找不到任何内容,并且我想从我的 lib 目录加载自定义模块。 我在 .env 文件中尝试了以下操作,并使用 Fore
如何在 package.json 中添加多个 NODE_PATH? 我想要这些多条路径: NODE_PATH=./ NODE_PATH=./modules/ 或 NODE_PATH=./lib NOD
在使用 NVM 设置 Node.js 的过程中,我在使用 Yeoman 时偶然发现了一个错误。我有错误 Cannot find module 'yeoman-generator' 经过一番研究,我发现
我是一名优秀的程序员,十分优秀!