为什么 npm 尝试编译我的代码的旧版本?

Joh*_*aly 7 javascript node.js npm

我对 npm 和 node.js 完全陌生,所以如果我没有提供正确的细节,请原谅我。我正在为一个网站编写一个插件,该网站使用 npm 中的开箱即用框架。当我愉快地编码时,它工作得很好,但在某些时候它开始尝试编译一个不再存在的文件。

\n\n

我用来npm run start编译我的 html 文件(其中也包含所有 javascript 代码)并收到此错误:

\n\n
\n\n
\xe2\x84\xb9 info Compiler will compile ./src/plugin.html\n\xe2\x84\xb9 info Transpiling with babel\n \xe2\x9c\x96 error Error\n  SyntaxError: unknown: Unexpected token (555:3)\n\n    553 | \n    554 | \n  > 555 | });\n        |    ^\n
Run Code Online (Sandbox Code Playgroud)\n\n

让我伤脑筋的是这个简单的语法错误不存在于./src/plugin.html(我已经四次检查了这个事实)。这显然属于该文件的早期版本。

\n\n

npm 是否有某种缓存会导致它编译旧版本的文件?我注意到,如果删除大部分代码,它会再次编译,但是当我替换代码时,它会再次中断。看起来,如果文件与其缓存版本有些相似,它会尝试编译缓存版本而不是当前版本。

\n\n

我尝试过清除缓存npm --force cache clear但没有效果。

\n\n

有什么建议么?

\n

Joh*_*aly 6

对于任何在使用 npm 编译代码时遇到类似问题的人,我发现我的问题确实是一个简单的语法错误。但 npm 似乎对编译错误到底是什么感到困惑。它指向文件中不存在的一行代码,我不知道它从哪里得到的。

在这种特殊情况下,语法错误的罪魁祸首是缺少};关闭一组包装的函数。

因此,这里的教训似乎是不要过于相信 npm 理解哪些语法错误会引发编译错误的能力。