KilledByAPixel / JSONCrush

Compress JSON into URL friendly strings
https://killedbyapixel.github.io/JSONCrush
MIT License
1.57k stars 45 forks source link

Support for node environment #8

Closed outaTiME closed 4 years ago

outaTiME commented 4 years ago

Hi guys, it will great to have node support for this module im unable to get it running outside the web 🙏

KilledByAPixel commented 4 years ago

try npm install jsoncrush

outaTiME commented 4 years ago

Hi @KilledByAPixel, i know, this module its available on npm,

but im running in vercel serverless function and im getting the following error,

export function JSONCrush(string) {
^^^^^^

SyntaxError: Unexpected token 'export'
    at wrapSafe (internal/modules/cjs/loader.js:1053:16)
    at Module._compile (internal/modules/cjs/loader.js:1101:27)
    at Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
    at Object.require.extensions.<computed> [as .js] (/Users/outaTiME/Library/Caches/com.vercel.cli/dev/builders/node_modules/ts-node/src/index.ts:832:44)
    at Module.load (internal/modules/cjs/loader.js:985:32)
    at Function.Module._load (internal/modules/cjs/loader.js:878:14)
    at Module.require (internal/modules/cjs/loader.js:1025:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (/Users/outaTiME/Code/ambito-dolar-server-new/services/api-test/index.js:2:25)
    at Module._compile (internal/modules/cjs/loader.js:1137:30)
    at Module.m._compile (/Users/outaTiME/Library/Caches/com.vercel.cli/dev/builders/node_modules/ts-node/src/index.ts:839:23)
    at Module._extensions..js (internal/modules/cjs/loader.js:1157:10)
    at Object.require.extensions.<computed> [as .js] (/Users/outaTiME/Library/Caches/com.vercel.cli/dev/builders/node_modules/ts-node/src/index.ts:842:12)
    at Module.load (internal/modules/cjs/loader.js:985:32)
    at Function.Module._load (internal/modules/cjs/loader.js:878:14)
    at Module.require (internal/modules/cjs/loader.js:1025:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at /Users/outaTiME/Library/Caches/com.vercel.cli/dev/builders/node_modules/@now/node/dist/launcher.js:41:28
    at main (/Users/outaTiME/Library/Caches/com.vercel.cli/dev/builders/node_modules/@now/node/dist/dev-server.js:57:7)
    at Object.<anonymous> (/Users/outaTiME/Library/Caches/com.vercel.cli/dev/builders/node_modules/@now/node/dist/dev-server.js:112:1)
    at Module._compile (internal/modules/cjs/loader.js:1137:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1157:10)

probably you are exporting the crush functions in non-standard way, here my snippet:

const { JSONUncrush } = require('jsoncrush');

const { Shared } = require('../../lib/shared');

export default async (req, res) => {
  try {
    const results = JSONUncrush("(%20'foo!%20'bar'%20)_");
    return Shared.serviceResponse(res, 200, results);
  } catch (error) {
    Shared.serviceResponse(res, error.code || 400, {
      error: error.message,
    });
  }
};
darcyparker commented 3 years ago

@outaTiME - Not sure if you noticed, but npm install jsoncrush is associated with the fork https://github.com/dprothero/JSONCrush (not this repo). The fork has a commit that exports JSONUncrush using ES Module syntax rather than CJS. In case others come across this, try node v12+ which has ESM support.