W
Wasp-lang2mo ago
lazi

Quickest way to locally host for public

Is there any fast way to locally host my wasp project to someone outside my network? For example, how would I set-up ngrok for a wasp app?
18 Replies
kapa.ai
kapa.ai2mo ago
Hi @lazi. I'm kapa.ai, your friendly support bot. I will try to answer your question by searching through the knowledge base. :wave: ---------------------- Yes, you can use ngrok to expose your local Wasp project to the internet. Here's how you can do it: 1. First, you need to start your Wasp app. Navigate to your project directory and run:
wasp start
wasp start
This will start your Wasp app on localhost:3000 for the frontend and localhost:3001 for the backend. 2. Then, in a new terminal window, start ngrok for both the frontend and the backend:
ngrok http 3000
ngrok http 3001
ngrok http 3000
ngrok http 3001
This will give you two public URLs that you can share. 3. You'll need to set the address of the forwarded local server in your .env.client file:
REACT_APP_API_URL= <https://<your_ngrok_url>>
REACT_APP_API_URL= <https://<your_ngrok_url>>
Replace <your_ngrok_url> with the ngrok URL that is forwarding to localhost:3001. Please note that you'll need to have ngrok installed on your machine to use it. If you don't have it installed, you can download it from the ngrok website (https://ngrok.com/download). Also, remember that ngrok provides a temporary public URL to your local server, so the URL will change every time you restart ngrok. For more details, you can refer to this Discord support thread (https://discord.com/channels/686873244791210014/1218081390176763914) where a similar question was discussed. ---------------------- Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: ---------------------- Sorry @lazi, I seem to be having a bit of trouble. Don't worry though, I've pinged my support and they will try to fix me up! :technologist: Perhaps try again in 15mins?
lazi
laziOP2mo ago
[ Wasp ] ../../../../src/user/operations.ts(62,3): error TS7006: Parameter 'context' implicitly has an 'any' type. ❌ --- [Error] Your wasp project failed to compile: ------------------------------- - SDK build failed with exit code: 2 ❌ --- [Error] Compilation of wasp project failed: -------------------------------- 1 errors found @kapa.ai I changed back to an older version and now i can't start wasp anymore
kapa.ai
kapa.ai2mo ago
Let me check the knowledge base for you. One moment! :books: ---------------------- The error message you're seeing is a TypeScript error. It's complaining that the context parameter in your operations.ts file implicitly has an 'any' type. TypeScript prefers explicit typing, and it's generally a good practice to specify types for all parameters and return values. To fix this error, you need to specify a type for the context parameter in your operations.ts file. If you're using entities in your API, the context parameter should have a type that includes the entities. Here's an example from the Wasp documentation (https://wasp-lang.dev/docs/advanced/apis#using-entities-in-apis):
import { FooBar } from "wasp/server/api";

export const fooBar: FooBar = (req, res, context) => {
res.json({ count: await context.entities.Task.count() });
};
import { FooBar } from "wasp/server/api";

export const fooBar: FooBar = (req, res, context) => {
res.json({ count: await context.entities.Task.count() });
};
In this example, context is implicitly typed through the FooBar type, which includes the entities property. If you're not sure what type to use for context, you could start by using any as a temporary measure:
export const fooBar = (req: any, res: any, context: any) => {
// Your code here
};
export const fooBar = (req: any, res: any, context: any) => {
// Your code here
};
However, using any defeats the purpose of TypeScript's static typing, so you should replace it with a more specific type as soon as you can. If you're still having trouble, it might be helpful to look at the changes you made when you switched to the older version. If you can identify what changed in your operations.ts file, that might give you a clue as to what's causing the error. ---------------------- Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: ---------------------- Sorry @lazi, I seem to be having a bit of trouble. Don't worry though, I've pinged my support and they will try to fix me up! :technologist: Perhaps try again in 15mins?
miho
miho2mo ago
I've used https://theboroer.github.io/localtunnel-www/ successfully before. Keep in mind you need to serve two tunnels: one for the client, one for the server and also set up the env vars so the client knows the new server URL and the server knows the new client URL (becuase they don't be on localhost anymore).
Localtunnel ~ Expose yourself to the world
Expose yourself to the world
miho
miho2mo ago
@kapa.ai tell me the env vars needs for a successful CORS setup where the client and servers are served via ngrok (for the client and for the server)
kapa.ai
kapa.ai2mo ago
Let me check the knowledge base for you. One moment! :books: ---------------------- To successfully set up CORS (Cross-Origin Resource Sharing) for your Wasp application using ngrok, you need to correctly set the following environment variables: For the server: - DATABASE_URL: The URL of the PostgreSQL database your app will use. - WASP_WEB_CLIENT_URL: The URL where your frontend app is running. This should be the ngrok URL that is forwarding to localhost:3000. - WASP_SERVER_URL: The URL where the server is running. This should be the ngrok URL that is forwarding to localhost:3001. - JWT_SECRET: This is required if you're using Wasp's auth features. Set it to a random string at least 32 characters long. - PORT: The server's HTTP port number. This is where the server listens for requests (default: 3001). For the client: - REACT_APP_API_URL: This should be set to the ngrok URL that is forwarding to localhost:3001. Please note that if you're using an external authentication method(s) supported by Wasp (such as Google or GitHub), you need to additionally set the necessary environment variables specifically required by these method(s). You can find more details about these environment variables in the Wasp documentation (https://wasp-lang.dev/docs/advanced/deployment/manually#environment-variables). Also, remember to ensure that the WASP_WEB_CLIENT_URL env variable includes the base directory if you're serving your app from a subdirectory. You can find more details about this in the Wasp documentation (https://wasp-lang.dev/docs/project/client-config#base-directory). Finally, please note that the CORS setup might need to be more restrictive depending on your requirements. You can find more details about this in this Github issue (https://github.com/wasp-lang/wasp/issues/94). ---------------------- Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: ---------------------- Sorry @miho, I seem to be having a bit of trouble. Don't worry though, I've pinged my support and they will try to fix me up! :technologist: Perhaps try again in 15mins?
lazi
laziOP2mo ago
Yep indeed this was my problem initially - I managed to make it work with a double ngrok after all - the other error was due to my environment more than anything but got that fixed too. Thank you for the help and keep up the great work, love wasp 🫶
miho
miho2mo ago
I'm glad it worked out for you 🙂 Maybe Wasp should add this as a feature! "Share your locally running app" @martinsos?
martinsos
martinsos2mo ago
@miho maybe indeed, added issue for it! https://github.com/wasp-lang/wasp/issues/2332
GitHub
Add support for sharing local app in Wasp CLI? · Issue #2332 · wasp...
I've used https://theboroer.github.io/localtunnel-www/ successfully before. Keep in mind you need to serve two tunnels: one for the client, one for the server and also set up the env vars so th...
NEROX
NEROX2mo ago
I think it would be amazing feature!!! Many times I have wanted to “share” my app under development with someone and I have never dared because I only know how to use ngrok in a super basic way.
lazi
laziOP2mo ago
@kapa.ai i tried the dual ngrok setup, my envs are in order, but auth is not working corectly: 16:39:00.460 EESTPOST /auth/email/login 200 OK 16:39:00.317 EESTOPTIONS /auth/email/login 204 No Content
Any fix ideas?
kapa.ai
kapa.ai2mo ago
Let me check the knowledge base for you. One moment! :books: ---------------------- The log you provided shows that the /auth/email/login endpoint is returning a 200 OK status, which means the request is successful. However, if you're still having issues with authentication, it could be due to a variety of reasons. Here are a few things you can check: 1. Environment Variables: Make sure that all the necessary environment variables are correctly set. For authentication, you should have JWT_SECRET set in your .env.server file. If you're using social auth methods like Google or GitHub, ensure that the respective CLIENT_ID and CLIENT_SECRET are correctly set. 2. Client-Server Connection: Ensure that the REACT_APP_API_URL in your .env.client file is set to the ngrok URL that is forwarding to localhost:3001 (your server). This is how your client knows where to send the requests. 3. Correct Usage of Auth Functions: Ensure that you're correctly using the auth functions in your Wasp code. For example, if you're using email/password authentication, you should be using auth.login(email, password) on the client side. 4. Browser Console Errors: Check your browser console for any errors. They can provide more information about what might be going wrong. If you're still having trouble, it would be helpful to have more information about the exact issue you're facing. Are you getting any error messages? At what point does the authentication process fail? For more details, you can refer to this Discord support thread (https://discord.com/channels/686873244791210014/1218081390176763914) where a similar question was discussed. ---------------------- Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: ---------------------- Sorry @lazi, I seem to be having a bit of trouble. Don't worry though, I've pinged my support and they will try to fix me up! :technologist: Perhaps try again in 15mins?
lazi
laziOP2mo ago
@kapa.ai 1,2,3 are fine but as you can see, after we login, even if it's 200, there's a EESTOPTIONS /auth/me 204 No Content
kapa.ai
kapa.ai2mo ago
Let me check the knowledge base for you. One moment! :books: ---------------------- The 204 No Content status code for the OPTIONS /auth/me request is actually expected behavior and not an error. This is a preflight request made by the browser before the actual request (a GET /auth/me in this case), to check the server's CORS policy. A 204 No Content status means that the server successfully processed the request and is not returning any content, which is the expected behavior for an OPTIONS request. However, if you're having issues after logging in, it could be due to how the /auth/me endpoint is being used. In Wasp, the /auth/me endpoint is used to check if a user is authenticated. If the user is authenticated, it returns a 200 OK status with the user's session info. If the user is not authenticated, it returns a 401 Unauthorized status. If you're seeing a 401 Unauthorized status after logging in, it could be that the user's session is not being correctly established or maintained. This could be due to a variety of reasons, such as issues with cookies or JWTs. For more details, you can refer to this Github issue (https://github.com/wasp-lang/wasp/issues/566) where a similar question was discussed. ---------------------- Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: ---------------------- Sorry @lazi, I seem to be having a bit of trouble. Don't worry though, I've pinged my support and they will try to fix me up! :technologist: Perhaps try again in 15mins?
lazi
laziOP2mo ago
@kapa.ai nothing in my console, it just refreshes the page after login succesful and it's asking me to login again / i remain not logged in
kapa.ai
kapa.ai2mo ago
Let me check the knowledge base for you. One moment! :books: ---------------------- This behavior could be due to a few reasons: 1. Session Management: Wasp uses sessions to keep track of the logged-in user. The session is stored in localStorage on the client and in the database on the server. If the session is not being correctly established or maintained, it could cause the user to be logged out immediately after logging in. You can check the localStorage in your browser's developer tools to see if the session is being stored correctly. source (https://wasp-lang.dev/docs/auth/overview#sessions) 2. Redirects: In Wasp, you can specify where to redirect the user after they log in by using the onAuthSucceededRedirectTo property in your app.wasp file. If this is not set correctly, it could cause unexpected behavior after login. source (https://github.com/wasp-lang/wasp/issues/1360) 3. Browser Behavior: Some browsers or browser settings can interfere with session management. For example, if the browser is set to clear cookies when it is closed, or if certain privacy settings are enabled, it could cause the session to be cleared immediately after login. 4. Code Issues: There could be an issue in your code that is causing the user to be logged out immediately after login. For example, if you're manually calling auth.logout() somewhere in your code, it could cause this behavior. 5. Server Issues: If the server is not correctly handling the /auth/me endpoint, it could cause the user to be logged out immediately after login. You can check the server logs to see if there are any errors or unexpected behavior. If none of these suggestions help, it would be useful to have more information about your setup and the exact steps you're taking when you experience this issue. For example, what code are you running when you log in? What happens in your app immediately after login? Are there any error messages in the console or network tab of your browser's developer tools? ---------------------- Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: ---------------------- Sorry @lazi, I seem to be having a bit of trouble. Don't worry though, I've pinged my support and they will try to fix me up! :technologist: Perhaps try again in 15mins?
lazi
laziOP2mo ago
@kapa.ai it's most likely the last variant - i'm using double ngrok setup. i only get 200 and 204 responses on server's log but I'm getting redirected after login which means onAuthFailedRedirectTo: "/login", .
kapa.ai
kapa.ai2mo ago
Let me check the knowledge base for you. One moment! :books: ---------------------- If you're getting redirected to the login page immediately after logging in, it could be due to the onAuthFailedRedirectTo: "/login" setting in your main.wasp file. This setting tells Wasp to redirect the user to the login page if authentication fails. In a dual ngrok setup, it's important to ensure that the client and server are correctly communicating with each other. Here are a few things you can check: 1. Environment Variables: Ensure that the REACT_APP_API_URL in your .env.client file is set to the ngrok URL that is forwarding to localhost:3001 (your server). This is how your client knows where to send the requests. 2. CORS Settings: CORS (Cross-Origin Resource Sharing) settings can sometimes cause issues in a dual ngrok setup. Make sure that your server is correctly configured to accept requests from the client's ngrok URL. 3. Session Management: Check if the session is being correctly established and maintained. You can do this by inspecting the localStorage in your browser's developer tools and checking the server logs. 4. Server Logs: Check the server logs for any errors or unexpected behavior. If the server is not correctly handling the /auth/me endpoint, it could cause the user to be logged out immediately after login. If none of these suggestions help, it would be useful to have more information about your setup and the exact steps you're taking when you experience this issue. For example, what code are you running when you log in? What happens in your app immediately after login? Are there any error messages in the console or network tab of your browser's developer tools? For more details, you can refer to this Discord support thread (https://discord.com/channels/686873244791210014/1218081390176763914) where a similar question was discussed. ---------------------- Note: you can ask me a follow up question by @ mentioning me again :speech_balloon: ---------------------- Sorry @lazi, I seem to be having a bit of trouble. Don't worry though, I've pinged my support and they will try to fix me up! :technologist: Perhaps try again in 15mins?
Want results from more Discord servers?
Add your server