Posts

Showing posts with the label JS

Shrinking node_modules for AWS Lambda (My First “npm shock” and a Practical Fix)

Image
I’m a newbie in Node.js and not really familiar with the whole npm ecosystem. I honestly didn’t expect that a single npm install would explode into ~10MB spread across ~30 different folders. After a few minutes of staring at it, I realized what’s actually inside those folders: not just runtime code. What shocked me Inside node_modules you get everything: README files source files tests examples docs And then the next level of madness: modules inside modules . Duplicated dependencies nested multiple levels deep (e.g. inherits , core-util-is , tedious …), even if they already exist elsewhere in the project tree. Here’s a typical example: I’m in node_modules → package bl , and there’s another node_modules folder inside it, plus test , README and other “junk”… all for a ~10KB JS file. The obvious assumption (that turned out wrong) Once I accepted the chaos, I assumed there must be a “build for production” command that would “compile” depende...

AWS API Gateway + Lambda: How to Add a “Get By ID” Resource (Path Parameter)

Image
This thing is not trivial and I couldn’t find a simple explanation. Here is the exact sequence to add a Get By ID -style path parameter like /users/{userid} in API Gateway and wire it to Lambda. Goal Turn an existing resource like /users into: /users /users/{userid} (new resource) Step-by-step Select an existing resource (e.g. users ). Click Actions and select Create Resource . In Resource Name , put the parameter name in curly braces (e.g. {userid} ). In Resource Path , you should see read-only text like /users/ and a textbox for the parameter. Enter {userid} in the textbox and click Create Resource . You should now see a new branch in your API tree: /{userid} . Select it. Click Actions → Create Method and add ANY (or the specific method you need). ...

Decimal number issue from server to client. Wow! Didn't expect this @_@

Image
Chapter 17   where a poor Decimal Number came from Server Side to JavaScript I worked on a page for days, adjusting the UI with CSS and HTML. Everything looked fine… until I started testing multi-lingual support. English — OK. Spanish — OK. Chinese — OK. Even right-to-left Hebrew (crooked and askew, but working). But Russian? Nope. In Russian the page stopped working completely: only static texts and images were visible. Nothing dynamic rendered. Of course it was a JavaScript error. Firefox DevTools showed this: That error led me to this JS code: I stared at those lines and saw nothing wrong — no missing variables, no typos, nothing obvious. I went to the original project code to find the exact non-rendered rows and noticed a server variable embedded into the client-side script: Which naturally led me to the server-side C# code responsible for generating that value: Nothing looked wrong there either. So I did what every developer does in ...

Configuring IIS to Allow CORS Requests (Fixing AJAX Calls to an API)

Image
The problem: sending AJAX requests from an HTML5 application running on my local machine to an API hosted under IIS (Google Cloud). The Setup Client: HTML/JS app on local machine Server: API under IIS (Google Cloud) The request looked like this: $.post({ url: apiEndpoint + "Init", contentType: "application/json; charset=utf-8", data: data, success: function (response) { logResponse("API response [Init]", response.d); }, error: function (xhr, status, error) { logResponse('Fail to call init API', data); } }); The error looked like this: Originally, there was crossDomain: true in the AJAX request, but it didn’t help. There were also crossdomain.xml and clientaccesspolicy.xml on the server — also useless for this case. What I Tried (And Why It Didn’t Help) I found many client-side “solutions” for AJAX, but they did not solve the issue....