Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Cannot find module in Electron

I am currently working on Electron with Babylon. I found this repo which I basically used as a boilerplate for my own project. Everything was working well until I tried to add jquery.pep.js for other needs. I keep on having this mistake :

Uncaught Error: Cannot find module 'jquery.pep.js'

I installed both libraries with "npm i -S jquery" and "npm i -S jquery.pep.js". In order to make jquery works, I added this script in the head of my index.html

<script> delete window.module; </script>

and this line in the top of my main.js :

window.$ = window.jQuery = require('jquery');

Now, jquery is working fine but for some reasons, jquery.pep.js module still can't be found. I tried to use 'require' but I have the same error

main.js

window.$ = window.jQuery = require('jquery'); 
var pep = require('jquery.pep.js');

Project structure

css/
img/
js/
-- main.js
node_modules/
index.html
index.js
package.json
renderer.js

like image 260
Nagah Avatar asked Jan 03 '18 10:01

Nagah


People also ask

What is Electron remote?

@electron/remote is an Electron module that bridges JavaScript objects from the main process to the renderer process. This lets you access main-process-only objects as if they were available in the renderer process.

What is Electron store?

Simple data persistence for your Electron app or module - Save and load user preferences, app state, cache, etc. Electron doesn't have a built-in way to persist user preferences and other data. This module handles that for you, so you can focus on building your app.


1 Answers

You are requesting something and node is not able to find it. You can read this dedicated article on requiring modules in node, which explains it quite simply. Quoting:

When we require a 'find-me' module, without specifying a path:

require('find-me');

Node will look for find-me.js in all the paths specified by module.paths — in order.

$ node
> module.paths
[ '/Users/samer/learn-node/repl/node_modules',
  '/Users/samer/learn-node/node_modules',
  '/Users/samer/node_modules',
  '/Users/node_modules',
  '/node_modules',
  '/Users/samer/.node_modules',
  '/Users/samer/.node_libraries',
  '/usr/local/Cellar/node/7.7.1/lib/node' ]

The paths list is basically a list of node_modules directories under every directory from the current directory to the root directory. It also includes a few legacy directories whose use is not recommended.

If Node can’t find find-me.js in any of these paths, it will throw a “cannot find module error.”

~/learn-node $ node
> require('find-me')
Error: Cannot find module 'find-me'
    at Function.Module._resolveFilename (module.js:470:15)
    at Function.Module._load (module.js:418:25)
    at Module.require (module.js:498:17)
    at require (internal/module.js:20:19)
    at repl:1:1
    at ContextifyScript.Script.runInThisContext (vm.js:23:33)
    at REPLServer.defaultEval (repl.js:336:29)
    at bound (domain.js:280:14)
    at REPLServer.runBound [as eval] (domain.js:293:12)
    at REPLServer.onLine (repl.js:533:10)

Make sure you have your module installed somewhere in what node knows as module.paths, or reference the file by providing absolute path.

like image 66
Adelin Avatar answered Sep 22 '22 08:09

Adelin