node resolve module not working when using link path
  Posted on:  2023年4月1日  at 13:16    
  
  
这是一篇发布于 615 天以前的旧文,其中的部分内容可能已经过时。
Failed to resolve module specifier “vue”
在 Windows 系统上开发一个 vue 项目,在启动时,碰到了问题,浏览器报错如下
Uncaught TypeError: Failed to resolve module specifier "vue". Relative references must start with either "/", "./", or "../".
看起来像是 import moudle 的时候,没有去 node_modules 目录下寻找对应的模块。
然后我去 Google 了好久,发现了一个 issue,看起来问题一样,但是并没有解决我的问题。
然后我去调试 node_modules 目录下的 vite 模块,打断点,却发现在 vscode 的调试模式下,项目运行完全正常,浏览器没有报错。
然后我去掉断点,依然一样正常。
然后我就疑惑了,在 Widnows Terminal 中运行和在 VS Code 中有什么不同吗?
最终我发现了:
- 在 
Widnows Terminal中,我运行的目录是~/projects/demo/gitbash-node-module - 而在 
VS Code中,默认打开的Git Bash所在目录是/e/projects/demo/gitbash-node-module 
这是由于,我一开始想要在目录 home:~ 中工作,然后又不想所有的项目文件全部保存在 C盘,所以在 Home 文件夹内建了个 projects 的目录软链接符号链接,如下所示:
# PowerShell
New-Item -ItemType SymbolicLink -Path ~\projects -Target E:\projects
至此,该问题找到了,是由于 nodejs 在链接的路径中,无法找到对应的模块。
硬链接 New-Item -ItemType HardLink -Path XXX -Target XXX 应该没问题,但是硬链接只能链接文件,无法链接目录。
所以我们只能更改一下项目路径,不要用链接的路径,就可以正常开发了。