VSCode 不适用于文件观察器

Gue*_*lla 6 node-sass visual-studio-code

我正在运行此命令来观看 .scss 文件node-sass-chokidar ./scss -o ./build --watch

如果我在记事本++中编辑文件,一切正常并且文件可以编译。

如果我在 VSCode 中编辑它,然后保存后会出现以下错误:

{
  "status": 3,
  "message": "File to read not found or unreadable: E:/Clients/conversions/css/scss/mobile.scss",
  "formatted": "Internal Error: File to read not found or unreadable: E:/Clients/conversions/css/scss/mobile.scss\n"
}
Run Code Online (Sandbox Code Playgroud)

我发现一些线程说这是由原子保存引起的,但 VSCode 开发人员在 github 线程中说 VSCode 不使用原子保存。但后来在另一个线程中他说它会重命名文件,所以我想这可能是个问题。

有谁知道我该如何解决这个问题并使其正常保存?

Mar*_*cos 2

更新的答案

我已经为在 vscode 上运行时的 node-sass watch bug 创建了一个补丁。它可以在这里找到: https: //github.com/marcosbozzani/patch-node-sass-watch

如何使用:

  1. 创建一个以patches您的项目命名的文件夹
  2. 补丁下载到您的项目patches文件夹
  3. 安装补丁包

另一种选择是从 更改node-sassdart-sass

npm uninstall node-sass
npm install sass
Run Code Online (Sandbox Code Playgroud)

并更新命令

node-sass scss/ -o .build/ --watch
Run Code Online (Sandbox Code Playgroud)

node-sass scss/:build/ --watch
Run Code Online (Sandbox Code Playgroud)

原答案

我有同样的问题。所以我为它创建了一个补丁并向node-sass提交了一个拉取请求:https://github.com/sass/node-sass/pull/2386

问题似乎是 VSCode 仍在保存该文件,而 node-sass 尝试访问它。此修复程序会检测到这种情况并应用重试机制。

如果您想立即尝试,作为临时措施,您可以通过将此版本替换“node_modules/node-sass/lib/render.js”来修补您的node-sass本地副本:https ://github.com/marcosbozzani /node-sass/blob/bug-vscode-watch/lib/render.js

差异在这里:https://github.com/marcosbozzani/node-sass/commit/266861bf5761dcafd5d53d123264b965c861887c#diff-a485abf5b8f49de7f313d7799df3faf4