You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

创建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目录:

  1. 打开根目录的package.json,在scripts节点中添加build命令:
"scripts": {
  "build": "esbuild app/javascript/*.* --bundle --sourcemap --outdir=app/assets/builds --public-path=assets"
}
  1. 执行npm install安装依赖
  2. 之后即可正常启动项目

办法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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 14:55:20