问题标签 [esbuild]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
54 浏览

ruby-on-rails - 在测试模式 (RSpec) 下,如何确保 Rail 7、cssbundling-rails、jsbundling-rails 存在资产?

我正在将一个大型的商业(专有)Rails 6 应用程序升级到 Rails 7。我们从未使用过 Webpacker,而是直接从捆绑的 gem (例如 Bootstrap)到“Rails 7 方式”。

事实证明,Rails 7 的“无节点”工作流程对于同时包含 CSS 和 JS 组件的组件没有很好的答案。在我们的例子中,最明显的违规者是 Bootstrap。面对通过导入映射维护 JS“一半”的 Bootstrap 和通过旧的 Bootstrap gem 或手动供应商之类的 CSS“一半”(是的,这里没有 Node 真的没有其他解决方案),我们最终回到了完整的状态节点工作流程。

这是一起来的。所有提供 CSS 和/或 JS 的前端组件都已经在 NPM 中愉快地可用了,所以现在这一切都通过package.json& Yarn 进行管理,bin/dev驱动 Sass 并esbuild 编译从 或app/assets中提取的 SCSS 和 JS 组件;因此,资产管道仅包含对内部文件夹的引用。app/javascriptnode_modules/...manifest.jsbuildimagesapp/assets

感觉有点倒退了,所有重量级的手动维护文件名列表(不再支持通配符导入)以及现在在 Foreman 下运行的多个进程的复杂性与仅在 Sprockets 中根据每个请求同步处理的事情基础,但所有这些东西都被弃用/放弃,显然是时候更新了。

这一切在开发和生产模式下都可以正常工作,但是测试呢?我们使用 RSpec;在 CI 中,没有构建资产,开发人员不想 每次运行时都必须记住运行或其他任何esbuild  内容。除此之外,它非常缓慢。assets:precompilerspec

当您想使用最新资产运行测试时,在基于 Yarn/Node 的工作流中专门使用cssbundling-railsand的官方惯用 Rails 7 解决方案是什么?jsbundling-rails

0 投票
0 回答
61 浏览

ruby-on-rails - 使用 esbuild 在 heroku 上升级到 Rails 7 后,Application.js 未编译

我将 Heroku 上的应用程序从带有 Webpacker 的 Rails 6 更新到带有 esbuild 的 Rails 7。

我在生产中收到的错误如下:

我进入我的 Heroku 服务器,看到 application.js 文件在app/assets/builds中,而在我的 manifest.js 中,它的设置如下:

但是当我检查public/assets/ * 文件夹时,所有文件都在那里,除了 application.js 和一个 css 文件。

正如 Heroku 在他们的网站上推荐的那样,我也在本地尝试了以下代码:

这会将包括 application.js 在内的所有文件编译到public/assets/ * 并在本地正常工作。在 Heroku 生产中,即使我尝试手动编译,application.js 也不会复制到public/assets/ *

我的 esbuild 脚本如下,可以正常工作:

有没有人有将 application.js 加载到 public/assets 中的线索或解决方案,这样我就不会收到以下错误?

这是 app/javascript/application.js

这是一个也没有编译的css文件,也许有连接,但我无法找到。(此文件夹中除此文件之外的所有其他 css 文件仅编译到公共/资产)

应用程序/资产/样式表/共享/swiper.scss

和我的脚本将scss到css放入app/assets/builds的脚本

不确定是否有帮助,但这是我的部署日志。(没有错误)

更新

似乎当我部署到 Heroku 时,Heroku 首先运行资产编译,然后构建包 json。因此,编译运行时 builds 文件夹为空,并且 application.js 不会复制到 public/assets。

现在为了解决这个问题,我从 git ignore 中删除了 builds 文件夹,并将 builds 中的文件添加到存储库中。所以现在编译运行时,构建文件夹包含文件并将其编译到公共/资产。我知道这不是解决问题的最佳方法,但目前这是我知道的唯一解决方法。

如果有人知道一种方法来编辑 heroku 部署脚本以在包 json 构建脚本之后运行资产编译,那么它可以解决问题。

0 投票
0 回答
20 浏览

node.js - socket.io 服务器 node.js 和 esbuild

我正在尝试使用 socket.io 设置服务器(API)和它们之间连接的客户端,这是我使用热重载的 esbuild 配置esbuild-serve(客户端在端口 7000 上运行,BE 在 8000 上运行)

这是我的项目树,Docker 只需使用 node 16 基础映像并运行命令node esbuild.config.js来启动开发热重载服务器并实例化 2 个 node.js 映像,暴露 7000(客户端)、8000(BE)、8001(websocket 端口)

在此处输入图像描述

客户端代码似乎工作正常:

这是似乎没有正确捆绑的 BE 代码

通过删除external: ['socket.io'],它开始抱怨 node_module 缺少依赖项,所以我按照它的建议启用这些设置:

但是,一旦我加载 localhost:8000,编译版本就会出现此错误Uncaught ReferenceError: require is not defined

更新:

我已将格式更改cjsesm,现在似乎可以编译,但没有抛出这个新错误:

Uncaught TypeError: Failed to resolve module specifier "socket.io". Relative references must start with either "/", "./", or "../"

0 投票
1 回答
13 浏览

sveltekit - sveltekit 或 esbuild 错误:两个输出文件共享相同路径但内容不同

刚才,我无缘无故地弄清楚,当我npm run dev在我的 sveltekit 项目上运行时,我收到了这个错误:

我已经这样做了数百次,并且奏效了。

万一这很重要,我的 repo 是一个 rushjs monorepo,我不断地使用它更新我的依赖项,所以也许某些版本在我的依赖项树中碰到了某个地方,但我不知道如何调试它。

是什么导致了这个错误?