bloodyowl / rescript-test

A lightweight test framework for ReScript
https://bloodyowl.github.io/rescript-test/
MIT License
78 stars 9 forks source link

Can't run retest #4

Closed argent-smith closed 3 years ago

argent-smith commented 3 years ago

Hi, I'm trying to run the tests but getting this:

~/Development/own/dryer · (useCurrentUser±)
⟩ yarn test
yarn run v1.22.10
$ retest client/**/*.bs.js
node:internal/process/esm_loader:74
    internalBinding('errors').triggerUncaughtException(
                              ^

Error [ERR_MODULE_NOT_FOUND]: Cannot find module '/Users/paul/Development/own/dryer/node_modules/rescript-test/src/Test.bs.js' imported from /Users/paul/Development/own/dryer/node_modules/rescript-test/bin/retest.mjs
    at new NodeError (node:internal/errors:329:5)
    at finalizeResolution (node:internal/modules/esm/resolve:323:11)
    at moduleResolve (node:internal/modules/esm/resolve:758:10)
    at Loader.defaultResolve [as _resolve] (node:internal/modules/esm/resolve:869:11)
    at Loader.resolve (node:internal/modules/esm/loader:86:40)
    at Loader.getModuleJob (node:internal/modules/esm/loader:230:28)
    at Loader.import (node:internal/modules/esm/loader:165:28)
    at importModuleDynamically (node:internal/modules/esm/translators:116:35)
    at exports.importModuleDynamicallyCallback (node:internal/process/esm_loader:30:14)
    at file:///Users/paul/Development/own/dryer/node_modules/rescript-test/bin/retest.mjs:19:57 {
  code: 'ERR_MODULE_NOT_FOUND'
}
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.

My package.json:

{
  "name": "dryer",
  "private": true,
  "version": "0.1.0",
  "dependencies": {
    "@rails/actioncable": "^6.0.0",
    "@rails/activestorage": "^6.0.0",
    "@rails/ujs": "^6.0.0",
    "@rails/webpacker": "5.2.1",
    "@rescript/react": "^0.10.1",
    "@rescript/std": "^9.0.1",
    "bootstrap": "^4.6.0",
    "bs-webapi": "^0.19.1",
    "jquery": "^3.6.0",
    "node-sass-glob-importer": "^5.3.2",
    "popper.js": "^1.16.1",
    "react": "^17.0.2",
    "react-dom": "^17.0.2",
    "rescript-future": "^1.1.0",
    "rescript-jzon": "^1.1.0",
    "rescript-request": "^1.1.0",
    "rescript-test": "^2.0.6"
  },
  "devDependencies": {
    "bs-platform": "^9.0.2",
    "webpack-dev-server": "^3.11.2"
  },
  "scripts": {
    "re:build": "bsb -make-world -clean-world",
    "re:watch": "bsb -make-world -clean-world -w",
    "test": "retest client/**/*.bs.js"
  }
}

My bsconfig.json:

{
  "$schema": "https://raw.githubusercontent.com/rescript-lang/rescript-compiler/master/docs/docson/build-schema.json",
  "name": "dryer",
  "bsc-flags": [
    "-bs-super-errors"
  ],
  "sources": [
    {
      "dir": "client/src",
      "subdirs": true
    }
  ],
  "package-specs": [
    {
      "module": "es6",
      "in-source": true
    }
  ],
  "reason": {
    "react-jsx": 3
  },
  "bs-dependencies": [
    "@rescript/react",
    "bs-webapi",
    "rescript-request",
    "rescript-future",
    "rescript-jzon",
    "rescript-test"
  ],
  "bs-dev-dependencies": [
  ],
  "external-stdlib" : "@rescript/std",
  "suffix": ".bs.js",
  "namespace": true,
  "ppx-flags": [],
  "refmt": 3
}

What am I doing wrong?

argent-smith commented 3 years ago

Upd: the latter was due to the project wasn't built. Now after re:build I get this:

⟩ yarn test
yarn run v1.22.10
$ retest client/**/*.bs.js
(node:2586) Warning: To load an ES module, set "type": "module" in the package.json or use the .mjs extension.
(Use `node --trace-warnings ...` to show where the warning was created)
/Users/paul/Development/own/dryer/node_modules/rescript-test/src/Test.bs.js:3
import * as Curry from "@rescript/std/lib/es6/curry.js";
^^^^^^

SyntaxError: Cannot use import statement outside a module
    at Object.compileFunction (node:vm:355:18)
    at wrapSafe (node:internal/modules/cjs/loader:1022:15)
    at Module._compile (node:internal/modules/cjs/loader:1056:27)
    at Object.Module._extensions..js (node:internal/modules/cjs/loader:1121:10)
    at Module.load (node:internal/modules/cjs/loader:972:32)
    at Function.Module._load (node:internal/modules/cjs/loader:813:14)
    at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:201:29)
    at ModuleJob.run (node:internal/modules/esm/module_job:154:23)
    at async Loader.import (node:internal/modules/esm/loader:166:24)
    at async file:///Users/paul/Development/own/dryer/node_modules/rescript-test/bin/retest.mjs:19:30
error Command failed with exit code 1.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
bloodyowl commented 3 years ago

@argent-smith Yup, that's due to Node's way of managing modules, you need to use the .mjs extension.

argent-smith commented 3 years ago

Fixed this by installing Babel et al. and switching to "commonjs" output. Thanx for the tool anyway )) Now it works and makes my sex better ))