理解Angular 2 webpack项目中的源代码符号链接
Understanding source code symlink in a Angular 2 webpack project
我有两个Angular2项目,使用webpack作为模块bundler和typescript。
为了在两者之间共享代码,我拆分了一些源代码,并创建了一个指向这两个项目中每个项目的"外部"源代码的符号链接。
执行此操作后,"符号链接代码"无法正确解析导入。
下面的一个"你好世界"项目显示了我的担忧。
https://github.com/datracka/angular2-symlink-issue
该项目直接运行,但如果您删除给定的src
文件夹,并创建一个指向另一个src
文件夹的符号链接,该文件夹具有位于/another/path/src
的相同源代码BUT,则会出现编译器错误:
ERROR in .-shared/src/main.ts
Module build failed: TypeError: Path must be a string. Received undefined
at assertPath (path.js:7:11)
at Object.dirname (path.js:1326:5)
at ensureTypeScriptInstance (/Users/vicensfayos/Projects/angular2-abc/node_modules/ts-loader/index.js:156:103)
at Object.loader (/Users/vicensfayos/Projects/angular2-abc/node_modules/ts-loader/index.js:403:14)
所以我的问题是:当我将源代码"分发"到项目文件夹之外的另一个文件夹中时,符号链接缺少什么?
我的猜测是关于在webpack中正确配置解析对象https://webpack.github.io/docs/resolving.html覆盖node.js加载nodemodule算法https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders但不是运气。
希望有人能给我指明方向。
我的猜测是对的。它是关于nodejs如何解析依赖关系的。https://nodejs.org/api/modules.html#modules_loading_from_node_modules_folders
符号链接的代码试图找到一直向上移动的依赖项,直到找到node_module
为止都失败了。但是什么都没有。node_module
在父项目中。
因此,解决方案是从符号链接的代码到父项目的node_modules
文件夹创建另一个符号链接,以解决依赖关系。
我有一个类似的设置,但决定在我的主应用程序中添加一个到tsconfig.json的路径:
"paths": {
"*": ["*", "node_modules/*"]
}
共享符号链接文件夹中源代码所需的所有模块都在主应用程序的node_modules文件夹中。这个命令告诉编译器在尝试查找树上的node_modules文件夹之前,先查看主应用程序的node_mdules文件夹。
- 链接内的内容可编辑块,如何防止重定向,但让文本选择插入符号位置更改
- 排除符号链接的npm警告意味着什么
- 隐藏源代码中的链接
- Gulp 在 gulp.src() 中的符号链接上给出错误
- Browserify - 在 package.json 中转换在符号链接模块中不起作用在 npm3 中
- 通过添加/删除指向外部脚本的链接,以编程方式更新页面的源代码
- 如何使用javascript跟踪符号链接
- Javascript 正则表达式用于替换页面上所有链接 href 中的 & 符号
- 无法解析符号“涡轮链接”
- 找不到符号链接
- 使用Jquery或CSS3隐藏链接时隐藏项目符号列表
- grunt是如何继续构建的,即使是grunt contrib符号链接也是如此;找不到路
- 当链接被点击时,英镑符号会出现在我的URL中
- 节点__dirname, process.cwd()报告实际目录而不是符号链接的目录
- 提取包含符号链接的压缩文件
- Javascript:检查url是真实文件还是符号链接
- 是否可以包含一个javascript文件从符号链接
- 理解Angular 2 webpack项目中的源代码符号链接
- npm 实时服务器安装:符号链接错误(即使以 root/admin 身份运行时)
- 为什么这些符号链接会发生无限递归循环