Search code examples
ecmascript-6koakoa2

how to setup module resolver in koa project?


I use "koa": "2.13.0", in my project and I have this .babelrc file:

{
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": "current"
        }
      }
    ]
  ],
  "plugins": [
    ["@babel/plugin-transform-async-to-generator"],
    ["module-resolver", {
      "root": ["./"],
      "alias": {
        "app": "./app",
        "routes": "./routes",
        "utils": "./utils"
      }
    }]
  ]
}

installed "babel-plugin-module-resolver": "4.0.0", on devDependencies package.json. But it does not work when I tried to require with 'utils' for example.

const utils = require('utils')

got this error:

internal/modules/cjs/loader.js:583
    throw err;
    ^

Error: Cannot find module 'utils'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:581:15)
    at Function.Module._load (internal/modules/cjs/loader.js:507:25)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
    at Object.<anonymous> (D:\work\Smartwalkie\presence-server\routes\health\index.js:3:34)
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)

I tried to make import export ES6 work together with module resolver on koajs project, but could not get it so far. Please help.


Solution

  • turns out, I should be using babel-node on the npm scripts, instead of nodemon or node. For using babel-node for my case, need to install:

    "@babel/core": "^7.12.3",
    "@babel/node": "^7.12.6",
    

    npm scripts should look like this:

      "scripts": {
        "start": "babel-node app.js",
        "dev": "nodemon --exec babel-node app.js"
      }