创建Ruby on Rails项目时npm提示未知命令set-script
解决Rails 7创建项目时
npm set-script报错的问题 先澄清一个误区
你在nvm help里找set-script是找错地方了——这个命令是npm自带的,和nvm没关系,nvm只是Node版本管理工具,所以nvm的命令列表里当然不会有它。
报错原因及解决办法
虽然npm 7及以上版本原生支持set-script,但你的npm 9.1.2可能存在环境异常,导致命令无法被正常识别。下面是几个可行的解决办法:
办法1:手动补全npm脚本
中断当前失败的项目创建流程,进入已经生成的project目录:
- 打开根目录的
package.json,在scripts节点中添加build命令:
"scripts": { "build": "esbuild app/javascript/*.* --bundle --sourcemap --outdir=app/assets/builds --public-path=assets" }
- 执行
npm install安装依赖 - 之后即可正常启动项目
办法2:调整npm版本
当前npm 9.1.2可能存在兼容bug,试试升级到最新稳定版:
npm install -g npm@latest
或者降级到npm 8的稳定版本(比如8.19.4):
npm install -g npm@8.19.4
版本调整完成后,重新执行原来的rails new命令即可。
办法3:跳过自动配置,手动搭建esbuild
用--skip-javascript参数跳过Rails的自动JS配置,之后手动设置:
rails new project -v 7.0.4 --css=sass --database=mysql --skip-javascript
进入项目目录后执行:
npm init -y npm install esbuild --save-dev
然后按照办法1的步骤在package.json中添加build脚本,最后确保config/application.rb里存在这条配置(没有就手动加上):
config.assets.paths << Rails.root.join("app/assets/builds")
内容的提问来源于stack exchange,提问作者GTO
相关产品推荐
相关产品推荐

