【问题标题】:Error: Cannot find module 'js' in Node Express app错误:在 Node Express 应用程序中找不到模块“js”
【发布时间】:2019-06-27 07:03:30
【问题描述】:

我有一个我正在忙的 NodeJS express 应用程序。

经过一番开发,我看到了这个问题:

错误:找不到模块“js”

经过一番谷歌搜索,我没有找到任何解决方案。通常的解决方法没有帮助:

  1. 确保模块可用

  2. 删除node_modules中的所有模块,然后重新安装

奇怪的是,Express 应用程序开箱即用,无需更改等。由于模块js我假设)丢失了不知何故,我将其添加到我的依赖列表中:

{
  "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"

  }
}

我怎么会遇到这个问题?

步骤:

  • 我在调试模式 (Webstorm) 下运行应用程序,并等待该应用程序初始化。 (没有错误)

控制台输出

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
  • 浏览到http://localhost:3000托管位置):页面有错误。

控制台输出(附加)

GET / 500 2736.227 ms - 3474

Stacktrace(显示在网页中)

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)

我该如何解决这个问题?

更新

我创建了一个新的 Express 应用程序,将所有内容分段复制以可能找到罪魁祸首...

该应用程序有效(在新的快递应用程序中),但我没有找出问题的原因。

这仍然是一个问题,因为尚未找到解决方案

【问题讨论】:

  • 尝试删除 ^ 。 ---> "js": "^0.1.0",
  • @ORBIT 抱歉,我想我不是很清楚。最初它不存在,并且不起作用。因此,我添加了一个缺少的模块,但它仍然无法正常工作。尽管如此,我还是会删除它。
  • @ORBIT 删除了它(你猜对了,没有运气)

标签: javascript node.js npm


【解决方案1】:

我认为你必须全局安装它 npm i -g js 然后就可以在控制台中使用了。

从您发送的链接:js is a a better alternative to node -p 和 node -p 用于系统终端to print the result of a script

更新:您是否正确注册了您的视图引擎?在您提供的堆栈中,您可以看到:

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

查看此文件中的代码时:

    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
    }

您可以通过DEBUG=express:* node index.js 启动您的应用来查看快速调试

更新 2:您似乎正在尝试使用扩展名 .js 加载视图:表示使用扩展名查找视图引擎 => 例如,文件 file.pug 将使用哈巴狗引擎呈现

【讨论】:

  • 我不确定这是否能解决问题。我刚刚创建了一个新的测试 Express 应用程序,它呈现得很好。正是这个应用程序(我正在询问)导致了问题。我不能成为一个缺失的模块(在这个意义上)
  • 那么,为什么要添加 js 模块?之前的错误是什么?
  • 只有 1 个错误。找不到模块“js”错误。我添加了“js”模块依赖项,因为当出现缺少模块消息时,这是合乎逻辑的事情。添加 'js' 模块依赖后,same 错误仍然存​​在。我已经删除了“js”模块依赖,并且 same 错误仍然存​​在。
【解决方案2】:

欢迎。尽管如此,我还有一点信息。

当我尝试使用视图引擎 ejs 将旧页面传输到 nodejs express 引擎时出现问题。事实证明,出于某种原因,引擎允许将站点的一些 javascript 文件作为要修复的文件。

很多应该解释这个日志转储:

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
(...)

修复: 该问题是由于静态文件的路径不正确造成的。 步骤1: 使用示例添加所有静态目录:

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

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

步数:2 更正静态文件的所有路径,以便它们引用根目录,例如 &lt;script src="/plugins/pace/pace.min.js"&gt;&lt;/script&gt;

【讨论】:

  • 这并不能回答这个问题,如果你想扩展这个问题,只需再做一个并在其中引用这个问题。
  • 我编辑了内容,因为它没有一直坚持下去。这是如何解决它的问题和答案。我希望我的问题(我提出的)的解决方案也将成为同事问题的解决方案。我理解的一位同事不需要任何 JS 模块。该错误描述得相当糟糕,调试需要一些时间。
猜你喜欢
  • 1970-01-01
  • 2020-12-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-26
  • 2022-01-24
相关资源
最近更新 更多