我正在查看各种角度5文件,试图弄清楚“@angular”如何指向正确的node_modules文件夹,然后导入该文件夹(即路由器)中的正确子模块(如果已导入)。似乎没有明确定义@angular“app”名称的配置路径的文件,如果你愿意的话。
我正在寻找这样的东西:“@angugular”:“。/ node_module / @angular”,但还没有发现它。
我在Mac OS上使用Angular 5,如果这意味着什么。
由于
答案 0 :(得分:0)
这不是Angular特有的。它是一个Typescript配置。
如果您查看tsconfig.json
(tsconfig.app.json
,如果您正在使用CLI),则会看到moduleResolution
属性:
"moduleResolution": "node",
'节点' mode意味着Typescript编译器将尝试像Node.JS那样解析模块,这意味着node_modules
将永远是模块解析的根。 node_modules
中的任何内容都可以通过这种方式通过绝对路径导入 - 假设包裹'打字稿定义文件位于其根路径中,这意味着它只能通过引用文件夹名称来导入。关于here.
@angular在子文件夹中以模块化方式生成其Typescript定义文件,因此您需要引用该文件的文件夹路径(例如@angular/core
)。
Typescript编译器用于查找模块或导出的另一个tsconfig.json属性是baseUrl
属性。在这里设置一些东西将允许编译器将该路径视为绝对路径(例如:在Angular应用程序中将baseUrl
设置为"src"
将允许您绝对地从中导入内容,因此import { Thing } from ../../../services/thing
可以成为import { Thing } from app/services/thing
。)
您还可以向编译器传递一个paths
对象,该对象将相对于baseUrl
向模块添加其他路径映射。