← back to NationalPaperHangers
fix(public/installer): coerce market_segments/materials elements to string before .replace — null array elements were crashing /installer/:slug rendering and triggering pm2 restart loop (41 restarts before fix)
f65e1d40a02210619105b51a61585338f250068f · 2026-05-06 11:11:18 -0700 · SteveStudio2
Files touched
M views/public/installer.ejs
Diff
commit f65e1d40a02210619105b51a61585338f250068f
Author: SteveStudio2 <steve@designerwallcoverings.com>
Date: Wed May 6 11:11:18 2026 -0700
fix(public/installer): coerce market_segments/materials elements to string before .replace — null array elements were crashing /installer/:slug rendering and triggering pm2 restart loop (41 restarts before fix)
---
views/public/installer.ejs | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/views/public/installer.ejs b/views/public/installer.ejs
index ac82d2a..9bdbb8b 100644
--- a/views/public/installer.ejs
+++ b/views/public/installer.ejs
@@ -32,7 +32,7 @@
<% var _heroImg = (portfolio.length === 0) ? pickSegmentImage(installer) : null; %>
<% if (_heroImg) {
var _attr = imageAttribution(_heroImg.file);
- var _firstSeg = (installer.market_segments && installer.market_segments[0]) || 'interior';
+ var _firstSeg = String((installer.market_segments && installer.market_segments[0]) || 'interior');
%>
<div class="installer-hero-image">
<img src="<%= _heroImg.file %>" alt="Wallcovering installation, <%= _firstSeg.replace(/_/g,' ') %>" loading="eager" decoding="async">
@@ -96,10 +96,10 @@
<dt>Team</dt><dd><%= installer.team_size %> installer<%= installer.team_size === 1 ? '' : 's' %></dd>
<% } %>
<% if ((installer.market_segments || []).length) { %>
- <dt>Segments</dt><dd><%= installer.market_segments.map(s => s.replace(/_/g,' ')).join(', ') %></dd>
+ <dt>Segments</dt><dd><%= installer.market_segments.map(s => String(s||'').replace(/_/g,' ')).filter(Boolean).join(', ') %></dd>
<% } %>
<% if ((installer.materials || []).length) { %>
- <dt>Materials</dt><dd><%= installer.materials.map(s => s.replace(/_/g,' ')).join(', ') %></dd>
+ <dt>Materials</dt><dd><%= installer.materials.map(s => String(s||'').replace(/_/g,' ')).filter(Boolean).join(', ') %></dd>
<% } %>
<% if ((installer.brands_handled || []).length) { %>
<dt>Brands installed</dt><dd><%= installer.brands_handled.join(', ') %></dd>
← 0b791b8 find: default to verified-only, add 'Show directory listings
·
back to NationalPaperHangers
·
auth: regenerate session on OAuth sign-in (fixation defense f240b01 →