我从头创建了Node.js应用程序,并在app.js中添加了
global.jQuery = require('jquery');
之后它给出了如下错误:
/home/yojna/web/node_modules/bootstrap/js/transition.js:36
$.fn.emulateTransitionEnd = function (duration) {
^
TypeError: Cannot set property 'emulateTransitionEnd' of undefined
at /home/yojna/web/node_modules/bootstrap/js/transition.js:36:29
at Object.<anonymous>(/home/yojna/web/node_modules/bootstrap/js/transition.js:59:2)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object.<anonymous>
(/home/yojna/web/node_modules/bootstrap/dist/js/npm.js:2:1)
at Module._compile (module.js:456:26)
yojna@yojna-Inspiron-7520:~/web$
答案 0 :(得分:3)
NPM包含服务器端库。 要包含引导程序或jquery等客户端库,请改为使用Bower。
我在快递应用程序中完成了这个:
创建.bowerrc文件并写下以下行:
bower install bootstrap
使用Bower下载bootstrap和jquery:
app.use(express.static(__dirname + '/public'));
然后,在app.js文件中将您的公共文件夹定义为静态文件:
script(src='components/jquery/dist/jquery.min.js')
script(src='components/bootstrap/dist/js/bootstrap.min.js')
最后,在您的视图中添加脚本标记(我在这里使用Jade):
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.Toast;
public class MainActivity extends Activity {
private LinearLayout linearLayoutFrom;
private LinearLayout additionalContactFrom;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
additionalContactFrom = (LinearLayout) findViewById(R.id.LinearLayoutAdditionalContactFrom);
linearLayoutFrom = (LinearLayout) findViewById(R.id.LinearLayoutFrom);
linearLayoutFrom.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(),
"linearLayoutFrom clicked!!!", Toast.LENGTH_SHORT)
.show();
if (additionalContactFrom.getVisibility() == View.GONE) {
additionalContactFrom.setVisibility(View.VISIBLE);
} else {
additionalContactFrom.setVisibility(View.GONE);
}
}
});
additionalContactFrom.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(getApplicationContext(),
"additionalContactFrom clicked!!!", Toast.LENGTH_SHORT)
.show();
if (linearLayoutFrom.getVisibility() == View.GONE) {
linearLayoutFrom.setVisibility(View.VISIBLE);
} else {
linearLayoutFrom.setVisibility(View.GONE);
}
}
});
}
}
答案 1 :(得分:3)
尝试声明美元符号变量:
global.jQuery = global.$ = require('jquery');
答案 2 :(得分:2)
我有这个问题,因为我已经包含了#34; bootstrap&#34;在我的供应商webpack 2配置中,但正在使用:
require("bootstrap-loader");
因此,浏览器无法正确找到bootstrap-loader软件包。
答案 3 :(得分:0)
你不应该require
它。 Jquery是一个客户端库,而Node.js是一个后端服务器。
如果您想在您的Node.js应用中使用Jquery,只需将其添加到您的HTML文件中:
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.js"></script>