通过 npm 安装的引导程序引发有关“错误:找不到模块 'jQuery'”的错误

Posted

技术标签:

【中文标题】通过 npm 安装的引导程序引发有关“错误:找不到模块 \'jQuery\'”的错误【英文标题】:bootstrap installed via npm throws error about "Error: Cannot find module 'jQuery'"通过 npm 安装的引导程序引发有关“错误:找不到模块 'jQuery'”的错误 【发布时间】:2015-07-26 18:56:46 【问题描述】:

我是 node 新手,npm 和 express.js 还在学习中。 在引导程序网站上,您可以使用npm install 使用引导程序,我使用npm install bootstrap --save 进行了相同的安装引导程序, 对 jquery 也这样做了,并且在 app.js 中是必需的

app.js 文件

var jQuery = require('jquery');
var bootstrap = require('bootstrap');

也改成这个了

global.jQuery = require('jquery');
var bootstrap = require('bootstrap');

var jQuery = require('jquery'); var bootstrap = require('bootstrap');

但是当我运行DEBUG=nodeAangularmysql:* ./bin/www 时,我收到以下错误。

/home/sharif/Sites/node/nodeAangularMySql/node_modules/bootstrap/js/transition.js:59
(jQuery);
  ^
ReferenceError: jQuery is not defined
    at Object.<anonymous> (/home/sharif/Sites/node/nodeAangularMySql/node_modules/bootstrap/js/transition.js:59:3)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)
    at Module.load (module.js:355:32)
    at Function.Module._load (module.js:310:12)
    at Module.require (module.js:365:17)
    at require (module.js:384:17)
    at Object.<anonymous> (/home/sharif/Sites/node/nodeAangularMySql/node_modules/bootstrap/dist/js/npm.js:2:1)
    at Module._compile (module.js:460:26)
    at Object.Module._extensions..js (module.js:478:10)

这是我第一次以这种方式使用引导程序,通常我将其下载并复制到公用文件夹或 Google CDN 下的样式表文件夹中。

以前从未使用过。我想知道几个这个n

    如何通过 npm install 使用 bootstrap 如何通过 npm install 使用 jquery 以及如何解决此错误

有什么想法吗?

【问题讨论】:

Bootstrap 旨在用于浏览器。我想知道,你想在 node 中用它做什么? 感谢@AndrewLavers 的反馈.. 但它在引导下载页面Install with npm 上说,我说我是节点开发的新手,我当然不知道情况是否如此 我能理解你的困惑。您可以将 npm 与 browserify (npmjs.com/package/browserify) 结合使用来构建客户端 javascript 项目。我想这就是引导人员在他们的文档中考虑的内容。 为了记录,在 Node 中运行特定于浏览器的代码有一个非常正当的理由:测试。在 Node 中运行测试套件比在浏览器中运行要快得多,如果您的代码使用 Bootstrap,那么您需要将其引入您的测试环境。并不是说这与 OP 相关,但我之所以提到它,是因为其他人(比如我自己)仍然希望找到解决此问题的方法。 这里不是已经回答了吗? ***.com/questions/22792254/… 【参考方案1】:

在 hbs 或 html 中的视图文件中使用下面的 CDN,下面的 CDN 应该可以正常工作。

我也遇到了同样的问题,但仍在尝试通过节点渲染引导程序,直到下面的 CDN 从视图中可以正常工作(如果包含)。

<link href="//netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css" rel="stylesheet"/>

<script src="//cdnjs.cloudflare.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>

<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.0/js/bootstrap.min.js"></script>

【讨论】:

【参考方案2】:

你需要这样做:

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

如果你使用像 eslint 这样的 linter,你可能会遇到一些问题,但是请查阅他们的文档。

您在这里所做的是将全局变量 $jQuery 再次分配给全局窗口对象,引导程序正在寻找它。请注意,在这个 JS 文件中,您可以像往常一样使用 jQuery 变量,但如果您尝试使用 $jQuery 从浏览器中的控制台,它不会在那里。但是当你将它重新分配给 window.$window.jQuery 时,它又可以使用了。

【讨论】:

以上是关于通过 npm 安装的引导程序引发有关“错误:找不到模块 'jQuery'”的错误的主要内容,如果未能解决你的问题,请参考以下文章

NPM 无法安装 appjs。错误:找不到模块 'graceful-fs'

安装 $npm 后,出现错误:找不到模块 '../lib/utils/unsupported.js'

npm 安装错误:“找不到 v120(平台工具集 = 'v120')的构建工具”

module.js:540错误:找不到模块'semver'

npm install oracledb 给出错误:找不到 $OCI_LIB_DIR/libclntsh.dylib

我想使用 npm 安装 sass,但它会抛出错误:找不到模块“semver”