纱线安装说是最新的,但无法启动 Rails 控制台
Posted
技术标签:
【中文标题】纱线安装说是最新的,但无法启动 Rails 控制台【英文标题】:Yarn install says up to date, yet can't start rails console 【发布时间】:2018-09-11 15:01:15 【问题描述】:我一直在使用 Webpack、Vue.js 和 Rails 开发应用程序。两个月没有问题,但是当我尝试启动 rails 控制台时,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.
我一直在查看 yarn 和 webpacker 文档,尝试了各种 yarn
清理命令,但没有运气。
有趣的是,我仍然可以运行服务器,它是唯一一个抱怨的控制台。
【问题讨论】:
您是否尝试删除yarn.lock
并再次运行yarn install
?
你尝试过 yarn update 吗?
我也没有尝试过,但是这个问题就消失了。不知道发生了什么...
我在运行 rails c
和 rails g ...
时遇到了同样的问题。删除 node_modules 和 yarn.lock 没有帮助
请记住在每次配置更改后和删除任何内容之前尝试spring stop
作为简单修复。
【参考方案1】:
这是一个老问题,已经解决了,所以我写下我最后做了什么:
只需删除node_modules
通常即可解决问题。如果您使用的是 spring,它也可能会搞砸,因此请考虑运行 DISABLE_SPRING=1 rails s
看看是否有帮助
【讨论】:
删除 node_modules 对我没有用,但禁用 spring 可以。有没有办法让 spring 和 webpacker 一起玩得很好?【参考方案2】:尝试通过运行 spring stop
重新启动 spring。
这为我解决了这个问题,意味着我不需要经常在命令前加上 spring disable 标志。
上面的命令停止spring:要检查它是否自动重启,运行spring status
。
感谢this comment on GitHub 提供解决方案!
【讨论】:
【参考方案3】:您可以添加config/environments/development.rb
此配置设置
config.webpacker.check_yarn_integrity = false
它也忘记在每个 Rails 调用中检查纱线的完整性,如迁移、启动控制台...、在开发环境中
【讨论】:
【参考方案4】:由于 node-sass 和 node 版本 16 之间的兼容性问题,此问题在 2021 年 4 月再次出现。(I had similar problems here 并提供与以下here 类似的答案。
所以我的解决方案是降级节点,直到版本 16 完全兼容。
使用nvm install 14
安装节点14,然后使用nvm alias default 14
将其设置为全局默认值。
然后:
-
如果 Rails 服务器正在运行,请停止它
打开一个全新的终端窗口(以便
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 服务器,它就可以工作了!
其他有用的信息:
This github 问题 - 特别是this comment【讨论】:
我唯一要补充的是,作为可能的额外内容,使用.nvmrc
并添加版本
@BenKoshy 我可能应该更新这个,因为我认为 node-sass 库已经更正了,所以现在可以使用最新的 node 版本(虽然我在推测)【参考方案5】:
试试yarn install
,然后再试试rails c
【讨论】:
【参考方案6】:如果您正在切换更改 yarn.lock
的分支,并且只想运行 rails 控制台而不必在每次切换时继续运行 yarn install
,您可以将其添加到您的 app/config/development.rb
config.webpacker.check_yarn_integrity = ENV['SKIP_YARN'].nil?
那么当 Rails 抱怨时,你可以简单地这样做
SKIP_YARN=true rails c
【讨论】:
【参考方案7】:就我而言,这解决了问题。
rm -rf yarn.lock
yarn install
【讨论】:
【参考方案8】:试试这个:NODE_ENV=development yarn install
【讨论】:
以上是关于纱线安装说是最新的,但无法启动 Rails 控制台的主要内容,如果未能解决你的问题,请参考以下文章
Rails 6 无法导入纱线依赖项:未捕获错误:模块解析失败:意外字符“#”(1:0)
在 Docker 中运行 Rails 应用程序时,纱线包已过期