我一直在使用webpack,vue.js和rails开发一个应用程序。两个月没有问题,但是当我尝试启动Rails Console rails c
时,yarn
抱怨包裹过时:
error An unexpected error occurred: "Unknown language key integrityNodeDoesntMatch".
info If you think this is a bug, please open a bug report with the information provided in "/Users/maksimfedotov/vras/yarn-error.log".
info Visit https://yarnpkg.com/en/docs/cli/check for documentation about this command.
========================================
Your Yarn packages are out of date!
Please run `yarn install` to update.
========================================
但是,当我运行yarn install
:
yarn install v1.3.2
[1/4] 🔍 Resolving packages...
success Already up-to-date.
✨ Done in 0.71s.
我一直在查看纱线和WebPacker文档,尝试了各种yarn
清理命令,但没有运气。
有趣的是,我仍然可以运行服务器,这是唯一抱怨的控制台。
这是一个旧问题,已经解决了,所以我最终写下了我所做的事情:
简单地删除node_modules
通常可以解决问题。如果您使用的是弹簧,它也可能会弄乱,因此请考虑运行DISABLE_SPRING=1 rails s
以查看是否有帮助
尝试通过运行spring stop
重新启动弹簧。
这为我解决了问题,这意味着我不需要不断使用弹簧禁用标志的命令。
上述命令停止弹簧:要检查它自动重新启动是否重新启动,请运行spring status
。
归功于解决方案的GitHub上的评论!
您可以在config/environments/development.rb
此配置设置
config.webpacker.check_yarn_integrity = false
它也忘记了在每个铁路呼叫上检查纱线的完整性,作为迁移,启动控制台...,在开发环境中
由于节点 - 萨斯和节点版本16之间的兼容性问题,此问题在2021年4月重新出现。(我在这里有类似的问题,并在下面提供了类似的答案(。
因此,我的解决方案是降级节点,直到版本16完全兼容。
使用nvm install 14
安装节点14,然后将其设置为使用nvm alias default 14
的全局默认值。
然后:
- 如果您正在运行的导轨服务器,请停止
- 打开一个新的新终端窗口(以便
node --version
返回14.x
(不是16( - 运行
spring stop
- 删除
yarn.lock
- 使用
rm -rf node_modules
删除现有节点模块 - 检查
node --version
是否返回14.如果它不再运行nvm install 14
。 - 现在用
yarn install
重新安装模块(如果您没有节点14的纱线,请使用npm install --global yarn
安装( - 它应该成功!
- 重新启动您的Rails Server,它将起作用!
其他有用的信息:
- 这个GitHub问题 - 此评论特别
尝试yarn install
然后再次rails c
如果要切换更改yarn.lock
的分支,并且只想在每次切换时都不必继续运行yarn install
,则可以将其添加到您的app/config/development.rb
config.webpacker.check_yarn_integrity = ENV['SKIP_YARN'].nil?
然后,当铁轨抱怨时,您可以简单地执行此操作
SKIP_YARN=true rails c
在我的情况下,这解决了问题。
rm -rf yarn.lock
yarn install
尝试以下方法: NODE_ENV=development yarn install