0

I'm trying to require a CoffeeScript file from a Node.js application but Node.js gives error Error: Cannot find module 'something'. What is the proper way to do this? If I compile the CoffeeScript code beforehand, it works but I don't want to do this.

test.js:

require('coffee-script').register();

require('something');

something.coffee:

console.log('Hello World!');

Console output:

> node test.js

module.js:340
    throw err;
          ^
Error: Cannot find module 'something'
  at Function.Module._resolveFilename (module.js:338:15)
  at Function.Module._load (module.js:280:25)
  at Module.require (module.js:364:17)
  at require (module.js:380:17)
  at Object.<anonymous> (C:\Users\Sami\Desktop\smallscale\test.js:3:1)
  at Module._compile (module.js:456:26)
  at Object.Module._extensions..js (module.js:474:10)
  at Module.load (module.js:356:32)
  at Function.Module._load (module.js:312:12)
  at Function.Module.runMain (module.js:497:10)
  at startup (node.js:119:16)
  at node.js:906:3
Scintillo
  • 1,634
  • 1
  • 15
  • 29
  • You're also against a watch process that compiles it? – Dave Newton Feb 10 '15 at 19:38
  • 1
    @DaveNewton Well I found multiple answers suggesting this should be possible. See for example http://stackoverflow.com/a/4769079/2193958. – Scintillo Feb 10 '15 at 19:58
  • Why not try what it said there? I always have a watcher that's linting and compiling so I don't really know about on-demand compilation--sorry. – Dave Newton Feb 10 '15 at 20:02

1 Answers1

2

It seems like you are trying to require() a file using the structure to require() a module.

If you require() something without giving require() a path to a file (absolute or relative), Node.js is going to look up for your module inside the /node_modules directory. You can read the documentation here.

Try requiring your module as a JavaScript file like this:

require('./something')

(and make sure './something' is the path from where you require the module to where the module is located in your app structure, or use an absolute path).

Marie
  • 194
  • 6