包管理器语义化版本号问题

44

那么,我以前使用过多次Parcel,从来没有遇到过问题。这一次,它抛出了一些关于SemVer版本控制的愚蠢错误,我正在尝试找到解决此问题的解决方案,而我简直快要疯了。

我开始新项目:安装npm w/ npm init(没有其他选项),然后安装了parcel npm install --save-dev parcel-bundler,然后创建了我的文件夹结构:

--node_modules
--index.html
--index.js

这是我的package.json:

{
  "name": "playground",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "dev": "parcel index.html"
  },
  "author": "",
  "license": "ISC",
  "devDependencies": {
    "parcel-bundler": "^1.12.4"
  }
}

我已经配置了默认的npm脚本来运行parcel:"dev": "parcel index.html",然后执行它。一切都正常,但是当我通过<script src="/index.js"></script>在index.html中连接我的index.js文件时,它会抛出一个大错误,内容如下:

D:\workingSpace\playground\index.js: Invalid Version: undefined
  at new SemVer (D:\workingSpace\playground\node_modules\@babel\preset-env\node_modules\semver\semver.js:314:11)
  at compare (D:\workingSpace\playground\node_modules\@babel\preset-env\node_modules\semver\semver.js:647:10)   
  at lt (D:\workingSpace\playground\node_modules\@babel\preset-env\node_modules\semver\semver.js:688:10)        
  at D:\workingSpace\playground\node_modules\@babel\preset-env\lib\index.js:276:22
  at Object.default (D:\workingSpace\playground\node_modules\@babel\helper-plugin-utils\lib\index.js:22:12)     
  at getEnvPlugins (D:\workingSpace\playground\node_modules\parcel-bundler\src\transforms\babel\env.js:62:34)   
  at getEnvConfig (D:\workingSpace\playground\node_modules\parcel-bundler\src\transforms\babel\env.js:12:25)    
  at async getBabelConfig (D:\workingSpace\playground\node_modules\parcel-bundler\src\transforms\babel\config.js:32:19)
  at async babelTransform (D:\workingSpace\playground\node_modules\parcel-bundler\src\transforms\babel\transform.js:6:16)
  at async JSAsset.pretransform (D:\workingSpace\playground\node_modules\parcel-bundler\src\assets\JSAsset.js:83:5)

目前我正在使用Node v14.6.0,相应的npm版本为-6.14.11

我以前从未遇到过这个错误,请帮帮我T_T

2个回答

83

在最新版本的Parcel中存在已知问题。

解决这个问题的方法是回退到版本1.12.3,或者更新到Parcel的版本2。你可以通过以下方式实现第一个解决方案:

npm uninstall parcel-bundler
npm i --save-dev parcel-bundler@1.12.3
第二个解决方案可以这样完成:
npm i --save-dev parcel@next

如果您决定使用Parcel的夜间版本,可能需要稍微重构一下代码,以防止出现破坏性的变化。查看有关如何迁移到Parcel v2 / nightly的更多信息此处

此处了解该问题的最新情况。


更新#1:28/05/2021

截至撰写本文(2021年5月28日),Parcel团队似乎已经在进行修复工作。尽管我个人没有检查更新是否正常工作,但此答案仍然是非常可行和可行的解决方案。


1
字面上的神。我不知道为什么以前没有遇到过这个问题,但还是谢谢。 - veilvokay
你说“众所周知”,但在我找到这个之前,我对这个问题完全不知所措。谢谢。 - Roly
2
让我免去了头痛之苦。谢谢你。 - Ron
在我的情况下,仅降级到.3或升级到.5并不能帮助我解决问题,直到我删除并重新创建了yarn.lock文件。 - Roman Starkov
在我的情况下,下一个版本也没有起作用。我不得不使用旧版本。 - Pankaj Jangid

8

最近我遇到了这个问题,在使用parcel@1.12.4时一直报错:Invalid Version: undefined。即使尝试了GitHub #5943中提供的很合理的解决方法,问题仍然没有得到解决。

在我的情况下,安装parcelV2解决了该问题。如果其他人也面临类似的问题,我建议尝试以下步骤:

  1. npm uninstall -D parcel-bundler
  2. npm install -D parcel@next
  3. npx parcel serve index.html

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接