localhost Appears in a Remote Asset Package: Why It May Not Open on Another Computer
If a remote package's asset addresses point to localhost, then after switching computers they will request the recipient's own machine. The service on the creator's computer does not move along with the ZIP, so "it plays on my machine" is not enough to prove that others can play it too. The order of handling is: confirm the actual request address, verify the application domain, re-export, then validate on another device.

Introduction
If a remote package's asset addresses point to localhost, then after switching computers they will request the recipient's own machine. The service on the creator's computer does not move along with the ZIP, so "it plays on my machine" is not enough to prove that others can play it too. The order of handling is: confirm the actual request address, verify the application domain, re-export, then validate on another device.
This article was compiled by DramaFork, based on the current project's export and asset delivery implementation notes for troubleshooting methods. The "Letters from Fog Harbor," ports, and symptoms below are fictional teaching examples, and were not treated as online test records.
First Confirm Whether the Page or the Video Is Failing
A remote link package is still a player package that needs to be unzipped and opened according to the instructions inside the package. It leaves videos and other resources on the server side, reading them through the asset delivery entry under the application domain. The player page opening but the first video failing to load, and the compressed package failing to unzip, are two different types of problems.
First record the package version the recipient received, where it happened, whether the network is available, and the original prompt shown on the page. If even the player did not open, first check the unzip and startup method according to README.txt; if the title and options are visible and only the video fails, then check the asset requests. Do not simultaneously modify the script, video, and domain before the issue has been located, otherwise you cannot tell which change took effect.
What is being checked is the actual resource address, not whether this word appears in the body text. The explanatory text may mention a local testing method, but that does not mean the player actually requested a local resource.
localhost Changes Meaning Depending on Who Opens It
In the fictional example, the creator runs a service on port 3000 on their own computer and exports the remote package from this environment. The video addresses in the package use localhost:3000. When the creator opens it, the address points to their own service; when the recipient opens it, it points to port 3000 on the recipient's computer. The recipient is not running the same service, so the video cannot be retrieved.
127.0.0.1 likewise represents the local loopback address. Changing it to another local port still cannot solve cross-computer sharing. A LAN address can only cover reachable devices in the corresponding network; a public egress IP also cannot by itself prove that a certain port is externally reachable. Formal delivery should use an application domain that is actually deployed and accessible to the recipient, then verify the specific asset requests.
This type of check cares about who the address points to and whether the service is reachable; it does not require the recipient to replicate the entire creation environment on their own computer.
Check the Actual Asset Addresses in the Package
The current export package contains story.json, index.html, instructions, and startup files. You can use a text editor to view the story data and player page, search for localhost and 127.0.0.1, and confirm whether the hits are located in video or other asset addresses. Keep the original package first; do not perform batch replacements while searching.
If you are familiar with browser developer tools, you can also view the domain and response status of failed requests during playback. Recording the domain, node location, and error type is enough; avoid posting the entire asset link with delivery credentials in public feedback.
| What you see | What to check next |
|---|---|
| The page opens, and the video request points to the local machine | The application domain configuration and the address after re-export |
| The application page is accessible, but the asset request fails | That asset delivery entry, the service response, and whether the resource exists |
| It works on the same network but not on an external network | The external reachability of the domain and service |
| Only one node fails | The resource mapping for that node; do not attribute it to all domains yet |
The application homepage opening does not mean every asset entry is normal. The homepage and a certain video are different requests, and you must continue checking along the actual point of failure.
After Changing the Configuration, a New Package Needs to Be Generated
The current implementation generates the remote asset entry based on the application address; when an application domain is configured, confirm that it points to the actually deployed service. After discovering a local address, first have the person maintaining the project verify the deployment domain, then re-export. Addresses already written into the old package will not update automatically just because you changed the project configuration.
It is not recommended to directly replace all localhost strings in the package with some domain. The asset entry also involves paths and access credentials; changing only the hostname cannot prove that the new service can recognize the same project and assets. After re-exporting, confirm from the new package's actual requests that it uses the expected domain.
Give the new package a distinguishable version name and tell the recipient which one to use. If both files are called "final version," the recipient may still open the old package, causing the already-corrected problem to appear again.
Walk Through a Verification Route Under the Recipient's Conditions
Choose a device that is not running the creation service, unzip the new remote package, start it according to the instructions, and keep it connected to the network. At minimum, check the opening, one choice point, and the next video after the choice; verifying only the opening may miss old resource addresses in later nodes.
Write the results as a record: package version, device and network, choices taken, whether loading succeeded, and where the failure occurred. Records of "to be verified" and "verified" must be kept separate; if there is no other device, keep this gap and do not use playback on the original computer as a substitute for recipient acceptance.
A remote package depends on the network and asset service remaining continuously available. A stable delivery entry cannot be interpreted as a permanent service guarantee. If the recipient must be completely offline, switch to a local asset package and verify offline playback according to the instructions; this is a choice after the delivery conditions change, and cannot be achieved by modifying the remote domain.
Before the next delivery, keep the original package first, verify one actual failed request, then re-export and test the same route. In this way, feedback can correspond to a clear version and clear resources.


