ELLIOTTCABLE / ppx-sedlex

(PACKAGED FOR BUCKLESCRIPT) — A lexer generator for OCaml, similar to ocamllex, but supporting Unicode.
Other
0 stars 1 forks source link

`MODULE_NOT_FOUND` on Mac OS X, caused by assumption on binary paths under `node_modules` #1

Open domq opened 4 years ago

domq commented 4 years ago

What I did: 1 npm install --save-dev ppx-sedlex bs-sedlex 2 Make the necessary changes to bsconfig.json, as per [the bs-sedlex instructions]§https://github.com/ELLIOTTCABLE/bs-sedlex#installation-in-bucklescript-projects) 3 bsb -clean-world -make-world

What I expected: a clean build

What I got: see stack spew below

What I used:

Stack spew:

/usr/local/lib/node_modules/bs-platform/darwin/bsc.exe   -color always -ppx /Users/quatrava/Dev/WordPress/webdirstat/node_modules/ppx-sedlex/ppx.js  -o server/qdirstatlexer.mlast -bs-syntax-only -bs-binary-ast /Users/quatrava/Dev/WordPress/webdirstat/server/qdirstatlexer.ml
internal/modules/cjs/loader.js:1023
  throw err;
  ^

Error: Cannot find module 'bs-platform/lib/bsc.exe'
Require stack:
- /Users/quatrava/Dev/WordPress/webdirstat/node_modules/ppx-sedlex/identify.js
- /Users/quatrava/Dev/WordPress/webdirstat/node_modules/ppx-sedlex/ppx.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:1020:15)
    at Function.resolve (internal/modules/cjs/helpers.js:78:19)
    at Object.<anonymous> (/Users/quatrava/Dev/WordPress/webdirstat/node_modules/ppx-sedlex/identify.js:11:30)
    at Module._compile (internal/modules/cjs/loader.js:1176:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1196:10)
    at Module.load (internal/modules/cjs/loader.js:1040:32)
    at Function.Module._load (internal/modules/cjs/loader.js:929:14)
    at Module.require (internal/modules/cjs/loader.js:1080:19)
    at require (internal/modules/cjs/helpers.js:72:18)
    at Object.<anonymous> (/Users/quatrava/Dev/WordPress/webdirstat/node_modules/ppx-sedlex/ppx.js:22:22) {
  code: 'MODULE_NOT_FOUND',
  requireStack: [
    '/Users/quatrava/Dev/WordPress/webdirstat/node_modules/ppx-sedlex/identify.js',
    '/Users/quatrava/Dev/WordPress/webdirstat/node_modules/ppx-sedlex/ppx.js'
  ]
}
File "/Users/quatrava/Dev/WordPress/webdirstat/server/qdirstatlexer.ml", line 1:
Error: Error while running external preprocessor
Command line: /Users/quatrava/Dev/WordPress/webdirstat/node_modules/ppx-sedlex/ppx.js '/var/folders/g3/0p9ww9716jj42dj45gn7bxnc0000gp/T/camlppx4c1b1c' '/var/folders/g3/0p9ww9716jj42dj45gn7bxnc0000gp/T/camlppx3da0ef'
r17x commented 4 years ago

I have some solution if you want, but I think this is the dirty way.

  1. update this file /Users/quatrava/Dev/WordPress/webdirstat/node_modules/ppx-sedlex/identify.js
    -- var bsc_executable = require.resolve("bs-platform/lib/bsc.exe")
    ++ var bsc_executable = require.resolve("bs-platform/bsc")
  2. and use patch-package for automatically patch with prepare or postinstall.

thanks