简体   繁体   中英

Error: Cannot find module 'js' in Node Express app

I have a NodeJS express app which I am busy with.

After some development, I see this issue:

Error: Cannot find module 'js'

After some Googling, I did not find any resolution. The usual resolution methods do not help:

  1. ensure the module is available

  2. remove all modules in node_modules , and reinstall them

What is strange is the Express app works out of the box, no changes, etc needed. Since the module js ( I assume ) is missing somehow , I added this to my dependancy list:

{
  "dependencies": {
    "cookie-parser": "~1.4.4",
    "debug": "~2.6.9",
    "js": "^0.1.0",                  <------------I added this
    "express": "^4.16.1",
    "http-errors": "~1.6.3",
    "morgan": "~1.9.1",
    "pug": "2.0.0-beta11",
    "ws": "^7.0.1",
    "fs-extra": "^8.0.1",
    "lodash": "4.17.11",
    "solc": "0.5.8",
    "scrypt": "^6.0.3",
    "python2": "^0.0.1",
    "web3": "1.0.0-beta.37"

  }
}

How do I get this problem?

Steps:

  • I run the app in debug mode (Webstorm), and wait for that app to initialize. (no errors)

Console Output

Debugger listening on ws://127.0.0.1:38687/75fc3e83-8a03-46ff-b769-b49dc880e767
For help, see: https://nodejs.org/en/docs/inspector
Debugger attached.
  commerce-chain-gui:server Listening on port 3000 +0ms
  • Browse to http://localhost:3000 ( where it is hosted ): page has errors.

Console Output (appended)

GET / 500 2736.227 ms - 3474

Stacktrace (shown in webpage)

Cannot find module 'js'
Error: Cannot find module 'js'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:668:15)
    at Function.Module._load (internal/modules/cjs/loader.js:591:27)
    at Module.require (internal/modules/cjs/loader.js:723:19)
    at require (internal/modules/cjs/helpers.js:14:16)
    at new View (/mnt/win_c/Users/s2134/IdeaProjects/commerce-chain-gui/node_modules/express/lib/view.js:81:14)
    at Function.render (/mnt/win_c/Users/s2134/IdeaProjects/commerce-chain-gui/node_modules/express/lib/application.js:570:12)
    at ServerResponse.render (/mnt/win_c/Users/s2134/IdeaProjects/commerce-chain-gui/node_modules/express/lib/response.js:1008:7)
    at /mnt/win_c/Users/s2134/IdeaProjects/commerce-chain-gui/routes/index.js:6:7
    at Layer.handle [as handle_request] (/mnt/win_c/Users/s2134/IdeaProjects/commerce-chain-gui/node_modules/express/lib/router/layer.js:95:5)
    at next (/mnt/win_c/Users/s2134/IdeaProjects/commerce-chain-gui/node_modules/express/lib/router/route.js:137:13)
    at Route.dispatch (/mnt/win_c/Users/s2134/IdeaProjects/commerce-chain-gui/node_modules/express/lib/router/route.js:112:3)
    at Layer.handle [as handle_request] (/mnt/win_c/Users/s2134/IdeaProjects/commerce-chain-gui/node_modules/express/lib/router/layer.js:95:5)
    at /mnt/win_c/Users/s2134/IdeaProjects/commerce-chain-gui/node_modules/express/lib/router/index.js:281:22
    at Function.process_params (/mnt/win_c/Users/s2134/IdeaProjects/commerce-chain-gui/node_modules/express/lib/router/index.js:335:12)
    at next (/mnt/win_c/Users/s2134/IdeaProjects/commerce-chain-gui/node_modules/express/lib/router/index.js:275:10)
    at Function.handle (/mnt/win_c/Users/s2134/IdeaProjects/commerce-chain-gui/node_modules/express/lib/router/index.js:174:3)
    at router (/mnt/win_c/Users/s2134/IdeaProjects/commerce-chain-gui/node_modules/express/lib/router/index.js:47:12)
    at Layer.handle [as handle_request] (/mnt/win_c/Users/s2134/IdeaProjects/commerce-chain-gui/node_modules/express/lib/router/layer.js:95:5)
    at trim_prefix (/mnt/win_c/Users/s2134/IdeaProjects/commerce-chain-gui/node_modules/express/lib/router/index.js:317:13)
    at /mnt/win_c/Users/s2134/IdeaProjects/commerce-chain-gui/node_modules/express/lib/router/index.js:284:7
    at Function.process_params (/mnt/win_c/Users/s2134/IdeaProjects/commerce-chain-gui/node_modules/express/lib/router/index.js:335:12)
    at next (/mnt/win_c/Users/s2134/IdeaProjects/commerce-chain-gui/node_modules/express/lib/router/index.js:275:10)

How can I resolve this?

Update

I created a new Express app, copied over everything in pieces to possibly find the culprit...

The app works (in the new express app), but I did not find out what caused the problem.

This is still an issue, as no solution has yet been found

I think you have to install it globally npm i -g js and then you can use it in the console.

From the link you send : js is aa better alternative to node -p and node -p is used in system terminal to print the result of a script

UPDATE : did you correctly register your view engine ? in the stacktace you give, you can see :

at new View ([...]/node_modules/express/lib/view.js:81:14)

when looking the code in this file there is :

    if (!opts.engines[this.ext]) {
      // load engine
      var mod = this.ext.substr(1)
      debug('require "%s"', mod) // Here is a debug function

      // default engine export
      var fn = require(mod).__express // Here is your error

      if (typeof fn !== 'function') {
          throw new Error('Module "' + mod + '" does not provide a view engine.')
      }

      opts.engines[this.ext] = fn
    }

you can view express debug by launching your app with DEBUG=express:* node index.js

UPDATE 2 : it seems that your are trying to load a view with the .js extension : express use the extension to find the view engine => for exemple, the file file.pug will be render with the pug engine

Welcome. Despite this, I have a little more information.

The problem appeared when I tried to transfer my old page to the nodejs express engine using view engine ejs. As it turned out, the engine for some reason tolerates some javascript files of the site as files to be repaired.

A lot should explain this log dump:

Error: Cannot find module 'ico'
Require stack:
- /root/bot/node_modules/express/lib/view.js
- /root/bot/node_modules/express/lib/application.js
- /root/bot/node_modules/express/lib/express.js
- /root/bot/node_modules/express/index.js
- /root/bot/core.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:892:15)
    at Function.Module._load (internal/modules/cjs/loader.js:785:27)
    at Module.require (internal/modules/cjs/loader.js:956:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at new View (/root/bot/node_modules/express/lib/view.js:81:14)
    at Function.render (/root/bot/node_modules/express/lib/application.js:570:12)
    at ServerResponse.render (/root/bot/node_modules/express/lib/response.js:1012:7)
    at ressend (/root/bot/include/routes/index.js:27:9)
    at Layer.handle [as handle_request] (/root/bot/node_modules/express/lib/router/layer.js:95:5)
    at next (/root/bot/node_modules/express/lib/router/route.js:137:13)
  express:router dispatching GET /server/js/bootstrap.min.js +13ms
  express:router query  : /server/js/bootstrap.min.js +1ms
  express:router expressInit  : /server/js/bootstrap.min.js +0ms
  express:router session  : /server/js/bootstrap.min.js +0ms
  express:view require "js" +0ms

Error: Cannot find module 'js'
Require stack:
- /root/bot/node_modules/express/lib/view.js
- /root/bot/node_modules/express/lib/application.js
- /root/bot/node_modules/express/lib/express.js
- /root/bot/node_modules/express/index.js
- /root/bot/core.js
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:892:15)
    at Function.Module._load (internal/modules/cjs/loader.js:785:27)
    at Module.require (internal/modules/cjs/loader.js:956:19)
    at require (internal/modules/cjs/helpers.js:74:18)
    at new View (/root/bot/node_modules/express/lib/view.js:81:14)
    at Function.render (/root/bot/node_modules/express/lib/application.js:570:12)
    at ServerResponse.render (/root/bot/node_modules/express/lib/response.js:1012:7)
    at ressend (/root/bot/include/routes/index.js:27:9)
    at Layer.handle [as handle_request] (/root/bot/node_modules/express/lib/router/layer.js:95:5)
    at next (/root/bot/node_modules/express/lib/router/route.js:137:13)
  express:router dispatching GET /server/js/demo/widgets.js +3ms
  express:router query  : /server/js/demo/widgets.js +0ms
  express:router expressInit  : /server/js/demo/widgets.js +0ms
  express:router session  : /server/js/demo/widgets.js +0ms
  express:router dispatching GET /server/plugins/sparkline/jquery.sparkline.min.js +1ms
  express:router query  : /server/plugins/sparkline/jquery.sparkline.min.js +0ms
  express:router expressInit  : /server/plugins/sparkline/jquery.sparkline.min.js +0ms
  express:router session  : /server/plugins/sparkline/jquery.sparkline.min.js +0ms
  express:view require "js" +0ms
  express:view require "js" +1ms
  express:router dispatching GET /server/plugins/flot-charts/jquery.flot.min.js +5ms
  express:router query  : /server/plugins/flot-charts/jquery.flot.min.js +1ms
  express:router expressInit  : /server/plugins/flot-charts/jquery.flot.min.js +0ms
  express:router session  : /server/plugins/flot-charts/jquery.flot.min.js +0ms
  express:router dispatching GET /server/js/demo/nifty-demo.min.js +0ms
  express:router query  : /server/js/demo/nifty-demo.min.js +1ms
  express:router expressInit  : /server/js/demo/nifty-demo.min.js +0ms
  express:router session  : /server/js/demo/nifty-demo.min.js +0ms
  express:router dispatching GET /server/plugins/flot-charts/jquery.flot.tooltip.min.js +0ms
  express:router query  : /server/plugins/flot-charts/jquery.flot.tooltip.min.js +0ms
  express:router expressInit  : /server/plugins/flot-charts/jquery.flot.tooltip.min.js +0ms
  express:router session  : /server/plugins/flot-charts/jquery.flot.tooltip.min.js +0ms
(...)

FIX: The problem results from incorrect paths to static files. Step 1: Add all static catalogs with example:

config.www.static_directories.forEach((dir)=>{
  app.use('/'+dir, express.static(path.join(config.www.directory+dir)))
})

or

app.use(express.static('public'))

Step: 2 Correct all paths to static files so that they refer to the root directory, eg <script src="/plugins/pace/pace.min.js"></script>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM