通过 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')的构建工具”