【问题标题】:Why does npm try to compile a old version of my code?为什么 npm 会尝试编译我的旧版本代码?
【发布时间】:2022-01-10 13:42:46
【问题描述】:

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

我使用npm run start 编译我的 html 文件(其中还包含所有 javascript 代码)并得到这个错误:


ℹ info Compiler will compile ./src/plugin.html
ℹ info Transpiling with babel
 ✖ error Error
  SyntaxError: unknown: Unexpected token (555:3)

    553 | 
    554 | 
  > 555 | });
        |    ^

让我大吃一惊的是./src/plugin.html 中不存在这个简单的语法错误(我已经四次检查了这个事实)。这显然与该文件的早期版本有关。

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

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

有什么建议吗?

【问题讨论】:

  • 您是否尝试过删除 node_modules 文件夹并重新安装软件包?
  • 确保你的 babel 设置正确。因为大多数时候这与你用来编译你的 javascript 的 babel 版本有关
  • 你在 package.json 中的scripts.start 是什么?
  • 那个错误似乎来自Babel。
  • 我删除了node_modules,然后用npm install重新安装。没有不同。我尝试使用npx babel-upgrade --write 升级 babel,没有区别。虽然说句公道话,但它以前可以工作,所以我不知道它会如何突然形成版本不兼容。 script.start 命令是node ./compiler.js --build --watch --prompt --serve --transpile。还有其他建议吗?

标签: javascript node.js npm


【解决方案1】:

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

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

所以看来这里的教训是不要太相信 npm 理解哪些语法错误会引发编译错误的能力。

【讨论】:

    【解决方案2】:

    我能够摆脱这种情况的唯一方法是:

    • 重命名文件
    • 重构对它的引用,以便编译
    • npm 开始
    • 停下来
    • 重命名文件并将其重构为原始名称

    【讨论】:

      【解决方案3】:

      你是否尝试使用rebuild或类似的东西或npm cache clean insted of npm --force cache clear?

      【讨论】:

      • 在使用--force 之前,我也尝试过npm cache clean。最后,这似乎是一个误传的语法错误。
      【解决方案4】:

      在取消 git rebase 后我遇到了同样的问题。我可以解决此问题的唯一方法是更改​​这些文件中的某些内容并在之后恢复更改。

      【讨论】:

        【解决方案5】:

        我最近遇到了这个问题。如果您在项目中使用 typescript,则可能在 tsconfig.json 文件中使用了错误的配置,可能已将 typescript 文件构建到其相应的 js 文件中,并且这些 js 文件是每次运行项目时运行的文件。

        【讨论】:

        • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。
        【解决方案6】:

        对我来说清楚地捕捉我的浏览器是有效的

        【讨论】:

          猜你喜欢
          • 2021-11-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-08-14
          • 2020-01-18
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多