{"id":3764,"date":"2012-11-25T22:16:32","date_gmt":"2012-11-25T22:16:32","guid":{"rendered":"http:\/\/zerokidz.com\/ideas\/?p=3764"},"modified":"2014-06-17T23:30:41","modified_gmt":"2014-06-18T03:30:41","slug":"node-js-including-files","status":"publish","type":"post","link":"https:\/\/reactivemusic.net\/?p=3764","title":{"rendered":"node.js: including files"},"content":{"rendered":"<p class=\"lead\">The old way&#8230;<\/p>\n<p><cite>By Udo G at Stack Overflow<\/cite><\/p>\n<table width=\"675\">\n<tbody>\n<tr>\n<td><\/td>\n<td>\n<div>\n<p>from:\u00a0<a href=\"http:\/\/stackoverflow.com\/questions\/5797852\/in-node-js-how-do-i-include-functions-from-my-other-files\">http:\/\/stackoverflow.com\/questions\/5797852\/in-node-js-how-do-i-include-functions-from-my-other-files<\/a><\/p>\n<p>If, despite all the other answers, you still want to traditionally\u00a0<em>include<\/em>\u00a0a file in a node.js source file, you can use this:<\/p>\n<pre>&lt;code&gt;var fs = require(&#039;fs&#039;); \/\/ file is included here: eval(fs.readFileSync(&#039;tools.js&#039;)+&#039;&#039;);&lt;\/code&gt;<\/pre>\n<ul>\n<li>The empty string concatenation\u00a0<code>+''<\/code>\u00a0is necessary to get the file content as a string and not an object (you can also use\u00a0<code>.toString()<\/code>\u00a0if you prefer).<\/li>\n<li>The eval() can&#8217;t be used inside a function and\u00a0<em>must<\/em>\u00a0be called inside the global scope otherwise no functions or variables will be accessible (i.e. you can&#8217;t create a\u00a0<code>include()<\/code>\u00a0utility function or something like that).<\/li>\n<\/ul>\n<p>Please note that in most cases this is\u00a0<em>bad practice<\/em>\u00a0and you should instead\u00a0<a href=\"http:\/\/nodejs.org\/docs\/latest\/api\/modules.html\">write a module<\/a>. However, there are rare situations, where pollution of your local context\/namespace is what you really want.<\/p>\n<\/div>\n<table>\n<tbody>\n<tr>\n<td><a id=\"link-post-5809968\" title=\"short permalink to this answer\" href=\"http:\/\/stackoverflow.com\/a\/5809968\">share<\/a>|<a title=\"\" href=\"http:\/\/stackoverflow.com\/posts\/5809968\/edit\">improve this answer<\/a><\/td>\n<td align=\"right\">\n<div>edited\u00a0<a title=\"show all edits to this post\" href=\"http:\/\/stackoverflow.com\/posts\/5809968\/revisions\">Jan 21 at 17:09<\/a><\/div>\n<div><\/div>\n<div><\/div>\n<\/td>\n<td align=\"right\">\n<div>answered Apr 27 &#8217;11 at 20:13<\/div>\n<div><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.gravatar.com\/avatar\/206e81dd131697326b3db3e226e7fb04?s=32&amp;d=identicon&amp;r=PG\" alt=\"\" width=\"32\" height=\"32\" \/><\/div>\n<div><a href=\"http:\/\/stackoverflow.com\/users\/688869\/udo-g\">Udo G<\/a><br \/>\n1,275319<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/td>\n<\/tr>\n<tr>\n<td><\/td>\n<td>\n<div id=\"comments-5809968\">\n<table>\n<tbody>\n<tr id=\"comment-10466607\">\n<td>\n<table>\n<tbody>\n<tr>\n<td>4<\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/td>\n<td>Cool, this is useful for quick&#8217;n&#8217;dirty putting JS libs designed for client-side into a node.js app without the need of maintaining a Node-styled fork. \u2013\u00a0<a title=\"17016 reputation\" href=\"http:\/\/stackoverflow.com\/users\/399317\/kos\">Kos<\/a>\u00a0<a href=\"http:\/\/stackoverflow.com\/questions\/5797852\/in-node-js-how-do-i-include-functions-from-my-other-files#comment10466607_5809968\">Dec 11 &#8217;11 at 13:24<\/a><\/td>\n<\/tr>\n<tr id=\"comment-11203326\">\n<td>\n<table>\n<tbody>\n<tr>\n<td>1<\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/td>\n<td>The &#8220;+&#8221;&#8221; is just a shortcut to force string casting. The more readable solution would be &#8220;String(fs.readFileSync(&#8216;tools.js&#8217;))&#8221; or if the read.FileSync returns an object then &#8220;fs.readFileSync(&#8216;tools.js&#8217;).toString()&#8221; should also work since toString is attached to the base Object prototype (i.e Object.prototype.toString). \u2013\u00a0<a title=\"2601 reputation\" href=\"http:\/\/stackoverflow.com\/users\/290340\/evan-plaice\">Evan Plaice<\/a>\u00a0<a href=\"http:\/\/stackoverflow.com\/questions\/5797852\/in-node-js-how-do-i-include-functions-from-my-other-files#comment11203326_5809968\">Jan 20 at 23:22<\/a><\/td>\n<\/tr>\n<tr id=\"comment-11203433\">\n<td><\/td>\n<td>-1 Blindly importing JS into the global namespace can open the code to unintended naming conflicts. If the code in the tools.js file were written in object literal format you could assign them to a local variable which works like a pseudo-namespace. Also, I don&#8217;t really think the eval is required (masylum&#8217;s code makes it seem like the code is already eval&#8217;d during the require). I think you&#8217;re import\/eval-ing the code with require, casting that code back to string and eval-ing it again just to pidgeonhole it into the global namespace. Looks like you&#8217;re doing it wrong. \u2013\u00a0<a title=\"2601 reputation\" href=\"http:\/\/stackoverflow.com\/users\/290340\/evan-plaice\">Evan Plaice<\/a>\u00a0<a href=\"http:\/\/stackoverflow.com\/questions\/5797852\/in-node-js-how-do-i-include-functions-from-my-other-files#comment11203433_5809968\">Jan 20 at 23:31<\/a><\/td>\n<\/tr>\n<tr id=\"comment-11211843\">\n<td>\n<table>\n<tbody>\n<tr>\n<td>1<\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/td>\n<td>I just answered the original question, which is about including code, not writing modules. The former\u00a0<em>can<\/em>\u00a0have advantages in certain situations. Also, your assumption about require is wrong: The code is certainly eval&#8217;d, but it remains in it&#8217;s own namespace and has no way to &#8220;pollute&#8221; the namespace of the calling context, hence you need to eval() it yourself. In most cases using the method described in my anwer\u00a0<em>is bad practice<\/em>\u00a0but it&#8217;s not me that should decide if it is for TIMEX. \u2013\u00a0<a title=\"1275 reputation\" href=\"http:\/\/stackoverflow.com\/users\/688869\/udo-g\">Udo G<\/a>\u00a0<a href=\"http:\/\/stackoverflow.com\/questions\/5797852\/in-node-js-how-do-i-include-functions-from-my-other-files#comment11211843_5809968\">Jan 21 at 17:03<\/a><\/td>\n<\/tr>\n<tr id=\"comment-13188536\">\n<td>\n<table>\n<tbody>\n<tr>\n<td>1<\/td>\n<td><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/td>\n<td>@EvanPlaice: do you have a better suggestion\u00a0<strong>which actually answers the question<\/strong>? If you need to include a file\u00a0<em>which is not a module<\/em>, do you have a better approach than this? Otherwise, downvoting it seems absurd. \u2013\u00a0<a title=\"107338 reputation\" href=\"http:\/\/stackoverflow.com\/users\/33213\/jalf\">jalf<\/a>\u00a0<a href=\"http:\/\/stackoverflow.com\/questions\/5797852\/in-node-js-how-do-i-include-functions-from-my-other-files#comment13188536_5809968\">Apr 21 at 11:04<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"excerpt":{"rendered":"<p>The old way&#8230; By Udo G at Stack Overflow from:\u00a0http:\/\/stackoverflow.com\/questions\/5797852\/in-node-js-how-do-i-include-functions-from-my-other-files If, despite all the other answers, you still want to traditionally\u00a0include\u00a0a file in a node.js source file, you can use this: &lt;code&gt;var fs = require(&#039;fs&#039;); \/\/ file is included here: eval(fs.readFileSync(&#039;tools.js&#039;)+&#039;&#039;);&lt;\/code&gt; The empty string concatenation\u00a0+&#8221;\u00a0is necessary to get the file content as a string and &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/reactivemusic.net\/?p=3764\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;node.js: including files&#8221;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","footnotes":""},"categories":[143],"tags":[90,6,25,12],"class_list":["post-3764","post","type-post","status-publish","format-standard","hentry","category-interactive-media-art","tag-how-to","tag-interactive-media","tag-programming","tag-web-development"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>node.js: including files - reactive music<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/reactivemusic.net\/?p=3764\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"node.js: including files - reactive music\" \/>\n<meta property=\"og:description\" content=\"The old way&#8230; By Udo G at Stack Overflow from:\u00a0http:\/\/stackoverflow.com\/questions\/5797852\/in-node-js-how-do-i-include-functions-from-my-other-files If, despite all the other answers, you still want to traditionally\u00a0include\u00a0a file in a node.js source file, you can use this: &lt;code&gt;var fs = require(&#039;fs&#039;); \/\/ file is included here: eval(fs.readFileSync(&#039;tools.js&#039;)+&#039;&#039;);&lt;\/code&gt; The empty string concatenation\u00a0+&#039;&#039;\u00a0is necessary to get the file content as a string and &hellip; Continue reading &quot;node.js: including files&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/reactivemusic.net\/?p=3764\" \/>\n<meta property=\"og:site_name\" content=\"reactive music\" \/>\n<meta property=\"article:published_time\" content=\"2012-11-25T22:16:32+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2014-06-18T03:30:41+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.gravatar.com\/avatar\/206e81dd131697326b3db3e226e7fb04?s=32&amp;d=identicon&amp;r=PG\" \/>\n<meta name=\"author\" content=\"Tom Zicarelli\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Tom Zicarelli\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=3764#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=3764\"},\"author\":{\"name\":\"Tom Zicarelli\",\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/#\\\/schema\\\/person\\\/56224d281582df7e5518e037ca63e571\"},\"headline\":\"node.js: including files\",\"datePublished\":\"2012-11-25T22:16:32+00:00\",\"dateModified\":\"2014-06-18T03:30:41+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=3764\"},\"wordCount\":477,\"image\":{\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=3764#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.gravatar.com\\\/avatar\\\/206e81dd131697326b3db3e226e7fb04?s=32&amp;d=identicon&amp;r=PG\",\"keywords\":[\"how to\",\"interactive media\",\"programming\",\"web development\"],\"articleSection\":[\"interactive media art\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=3764\",\"url\":\"https:\\\/\\\/reactivemusic.net\\\/?p=3764\",\"name\":\"node.js: including files - reactive music\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=3764#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=3764#primaryimage\"},\"thumbnailUrl\":\"http:\\\/\\\/www.gravatar.com\\\/avatar\\\/206e81dd131697326b3db3e226e7fb04?s=32&amp;d=identicon&amp;r=PG\",\"datePublished\":\"2012-11-25T22:16:32+00:00\",\"dateModified\":\"2014-06-18T03:30:41+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/#\\\/schema\\\/person\\\/56224d281582df7e5518e037ca63e571\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=3764#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/reactivemusic.net\\\/?p=3764\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=3764#primaryimage\",\"url\":\"http:\\\/\\\/www.gravatar.com\\\/avatar\\\/206e81dd131697326b3db3e226e7fb04?s=32&amp;d=identicon&amp;r=PG\",\"contentUrl\":\"http:\\\/\\\/www.gravatar.com\\\/avatar\\\/206e81dd131697326b3db3e226e7fb04?s=32&amp;d=identicon&amp;r=PG\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/?p=3764#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/reactivemusic.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"node.js: including files\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/#website\",\"url\":\"https:\\\/\\\/reactivemusic.net\\\/\",\"name\":\"reactive music\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/reactivemusic.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/reactivemusic.net\\\/#\\\/schema\\\/person\\\/56224d281582df7e5518e037ca63e571\",\"name\":\"Tom Zicarelli\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0da58cf21a2707dd335b204b8ed3cd9194dcbf9d9814ac5d71195a65c76c8a72?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0da58cf21a2707dd335b204b8ed3cd9194dcbf9d9814ac5d71195a65c76c8a72?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/0da58cf21a2707dd335b204b8ed3cd9194dcbf9d9814ac5d71195a65c76c8a72?s=96&d=mm&r=g\",\"caption\":\"Tom Zicarelli\"},\"sameAs\":[\"http:\\\/\\\/tomzicarelli.com\"],\"url\":\"https:\\\/\\\/reactivemusic.net\\\/?author=2\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"node.js: including files - reactive music","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/reactivemusic.net\/?p=3764","og_locale":"en_US","og_type":"article","og_title":"node.js: including files - reactive music","og_description":"The old way&#8230; By Udo G at Stack Overflow from:\u00a0http:\/\/stackoverflow.com\/questions\/5797852\/in-node-js-how-do-i-include-functions-from-my-other-files If, despite all the other answers, you still want to traditionally\u00a0include\u00a0a file in a node.js source file, you can use this: &lt;code&gt;var fs = require(&#039;fs&#039;); \/\/ file is included here: eval(fs.readFileSync(&#039;tools.js&#039;)+&#039;&#039;);&lt;\/code&gt; The empty string concatenation\u00a0+''\u00a0is necessary to get the file content as a string and &hellip; Continue reading \"node.js: including files\"","og_url":"https:\/\/reactivemusic.net\/?p=3764","og_site_name":"reactive music","article_published_time":"2012-11-25T22:16:32+00:00","article_modified_time":"2014-06-18T03:30:41+00:00","og_image":[{"url":"http:\/\/www.gravatar.com\/avatar\/206e81dd131697326b3db3e226e7fb04?s=32&amp;d=identicon&amp;r=PG","type":"","width":"","height":""}],"author":"Tom Zicarelli","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Tom Zicarelli","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/reactivemusic.net\/?p=3764#article","isPartOf":{"@id":"https:\/\/reactivemusic.net\/?p=3764"},"author":{"name":"Tom Zicarelli","@id":"https:\/\/reactivemusic.net\/#\/schema\/person\/56224d281582df7e5518e037ca63e571"},"headline":"node.js: including files","datePublished":"2012-11-25T22:16:32+00:00","dateModified":"2014-06-18T03:30:41+00:00","mainEntityOfPage":{"@id":"https:\/\/reactivemusic.net\/?p=3764"},"wordCount":477,"image":{"@id":"https:\/\/reactivemusic.net\/?p=3764#primaryimage"},"thumbnailUrl":"http:\/\/www.gravatar.com\/avatar\/206e81dd131697326b3db3e226e7fb04?s=32&amp;d=identicon&amp;r=PG","keywords":["how to","interactive media","programming","web development"],"articleSection":["interactive media art"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/reactivemusic.net\/?p=3764","url":"https:\/\/reactivemusic.net\/?p=3764","name":"node.js: including files - reactive music","isPartOf":{"@id":"https:\/\/reactivemusic.net\/#website"},"primaryImageOfPage":{"@id":"https:\/\/reactivemusic.net\/?p=3764#primaryimage"},"image":{"@id":"https:\/\/reactivemusic.net\/?p=3764#primaryimage"},"thumbnailUrl":"http:\/\/www.gravatar.com\/avatar\/206e81dd131697326b3db3e226e7fb04?s=32&amp;d=identicon&amp;r=PG","datePublished":"2012-11-25T22:16:32+00:00","dateModified":"2014-06-18T03:30:41+00:00","author":{"@id":"https:\/\/reactivemusic.net\/#\/schema\/person\/56224d281582df7e5518e037ca63e571"},"breadcrumb":{"@id":"https:\/\/reactivemusic.net\/?p=3764#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/reactivemusic.net\/?p=3764"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/reactivemusic.net\/?p=3764#primaryimage","url":"http:\/\/www.gravatar.com\/avatar\/206e81dd131697326b3db3e226e7fb04?s=32&amp;d=identicon&amp;r=PG","contentUrl":"http:\/\/www.gravatar.com\/avatar\/206e81dd131697326b3db3e226e7fb04?s=32&amp;d=identicon&amp;r=PG"},{"@type":"BreadcrumbList","@id":"https:\/\/reactivemusic.net\/?p=3764#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/reactivemusic.net\/"},{"@type":"ListItem","position":2,"name":"node.js: including files"}]},{"@type":"WebSite","@id":"https:\/\/reactivemusic.net\/#website","url":"https:\/\/reactivemusic.net\/","name":"reactive music","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/reactivemusic.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/reactivemusic.net\/#\/schema\/person\/56224d281582df7e5518e037ca63e571","name":"Tom Zicarelli","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/0da58cf21a2707dd335b204b8ed3cd9194dcbf9d9814ac5d71195a65c76c8a72?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/0da58cf21a2707dd335b204b8ed3cd9194dcbf9d9814ac5d71195a65c76c8a72?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0da58cf21a2707dd335b204b8ed3cd9194dcbf9d9814ac5d71195a65c76c8a72?s=96&d=mm&r=g","caption":"Tom Zicarelli"},"sameAs":["http:\/\/tomzicarelli.com"],"url":"https:\/\/reactivemusic.net\/?author=2"}]}},"_links":{"self":[{"href":"https:\/\/reactivemusic.net\/index.php?rest_route=\/wp\/v2\/posts\/3764","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/reactivemusic.net\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/reactivemusic.net\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/reactivemusic.net\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/reactivemusic.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=3764"}],"version-history":[{"count":4,"href":"https:\/\/reactivemusic.net\/index.php?rest_route=\/wp\/v2\/posts\/3764\/revisions"}],"predecessor-version":[{"id":3766,"href":"https:\/\/reactivemusic.net\/index.php?rest_route=\/wp\/v2\/posts\/3764\/revisions\/3766"}],"wp:attachment":[{"href":"https:\/\/reactivemusic.net\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=3764"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/reactivemusic.net\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=3764"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/reactivemusic.net\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=3764"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}