ruby-on-rails Rails 7.0 + esbuild:运行应用程序时出现错误:未找到命令“build”

rdrgkggo  于 2023-02-17  发布在  Ruby
关注(0)|答案(3)|浏览(242)

新生成的带有esbuild选项的Rails 7.0在启动时出错。

rails new [project name] --javascript=esbuild --css=tailwind

在创建一个新的rails 7项目时,我尝试使用bin/dev启动应用程序,而现在使用foreman,但是它出错了,错误信息是“error command“build”not found“。

bin/dev
                                                                                                      !10520
16:07:31 web.1  | started with pid 53018
16:07:31 js.1   | started with pid 53019
16:07:31 css.1  | started with pid 53020
16:07:32 js.1   | yarn run v1.22.17
16:07:32 css.1  | yarn run v1.22.17                    **************             
16:07:32 js.1   | error Command "build" not found. <== *****THIS*****
16:07:32 js.1   | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
16:07:32 css.1  | error Command "build:css" not found.
16:07:32 css.1  | info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
16:07:33 css.1  | exited with code 1
16:07:33 system | sending SIGTERM to all processes
16:07:33 js.1   | exited with code 1
16:07:33 web.1  | terminated by SIGTERM
ru9i0ody

ru9i0ody1#

问题

问题是,在npm〈7.1的情况下,rails generation期望您向package.json脚本添加构建命令。

rails new my_app --javascript=esbuild --css=tailwind
...
Add "scripts": { "build": "esbuild app/javascript/*.* --bundle --sourcemap --outdir=app/assets/builds" } to your package.json
...
Add "scripts": { "build:css": "tailwindcss -i ./app/assets/stylesheets/application.tailwind.css -o ./app/assets/builds/application.css" } to your package.json

$ cat ol_npm/package.json
{
  "name": "app",
  "private": "true",
  "dependencies": {
    "@hotwired/stimulus": "^3.0.1",
  ...
  }
  // !! script section missing !!
  // Add the above scripts
}

稍后的npm(〉= 7.1),为您添加到package.json中。最好的长期解决方案是升级npm(解决方案1),然而,您仍然可以手动添加脚本(参见下面的解决方案2),它将工作。
溶液

1. npm升级:

修复需要升级npm。然后再次运行安装程序。

  1. js绑定需要npm 7.1以上版本
    1.再次运行安装程序
重新运行安装程序的示例
./bin/rails javascript:install:[esbuild|rollup|webpack]
   ./bin/rails css:install:[tailwind|bootstrap|bulma|postcss|sass]

完成后,Rails会自动用所需的脚本更新package.json

2.将脚本添加到package.json

如果由于某种原因,您无法升级node/npm,那么您只需按照说明将"Add script"命令复制到package.json中。
1.添加脚本(见下文)

{
  "name": "app",
  "private": "true",
  "dependencies": {
    "@hotwired/stimulus": "^3.0.1",
    ...
  },
  "scripts": {
    "build": "esbuild app/javascript/*.* --bundle --sourcemap --outdir=app/assets/builds",
    "build:css": "tailwindcss -i ./app/assets/stylesheets/application.tailwind.css -o ./app/assets/builds/application.css"
  }
}

1.Yarn结构
1.Yarn结构:css

b5lpy0ml

b5lpy0ml2#

我想添加到@notapatch answer,以便在步骤2之后运行以下命令:

yarn build

然后

yarn build:css

不客气。

gwo2fgha

gwo2fgha3#

如果你像我一样来到这里

esbuild: command not found

这是因为build脚本已经存在,但是您必须执行npm install来安装package.json中的所有包。

相关问题