Javascript TypeError:element.summernote不是函数
我正在做一个基于Angular、Webpack等的项目,当我想使用它时,我遇到了一个非常有趣的问题 它不工作,并给我一个错误“TypeError:element.summernote不是函数”。如果将库添加为脚本标记,而不使用任何构建工具,则它可以正常工作,但使用Webpack则不能正常工作 那么,让我们看看文件和配置 webpack.config.jsJavascript TypeError:element.summernote不是函数,javascript,jquery,angularjs,webpack,summernote,Javascript,Jquery,Angularjs,Webpack,Summernote,我正在做一个基于Angular、Webpack等的项目,当我想使用它时,我遇到了一个非常有趣的问题 它不工作,并给我一个错误“TypeError:element.summernote不是函数”。如果将库添加为脚本标记,而不使用任何构建工具,则它可以正常工作,但使用Webpack则不能正常工作 那么,让我们看看文件和配置 webpack.config.js let webpack = require('webpack'); let path = require('path'); module.e
let webpack = require('webpack');
let path = require('path');
module.exports = {
entry: {
bundle: [
'./app/app.js'
]
},
output: {
path: path.join(__dirname, './public'),
filename: '[name].js',
},
resolve: {
root: __dirname,
extensions: ['', '.js'],
modulesDirectories: [
'node_modules',
'app'
],
},
externals: {
},
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
})
],
module: {
loaders: [
{
loader: 'babel-loader',
query: {
presets: ['es2015']
},
test: /\.js$/,
exclude: /(node_modules|bower_components)/
}
]
}
};
// Load libs
import angular from 'angular';
import ngRoute from 'angular-route';
import summernote from 'summernote';
import ngSummernote from 'angular-summernote/dist/angular-summernote.js';
// App
angular.module('app', [ngRoute, 'summernote'])
.config(function($routeProvider) {
// Router
$routeProvider
.when('/', {
template: '<summernote></summernote>'
});
});
let webpack = require('webpack');
let path = require('path');
module.exports = {
entry: {
bundle: [
// We tell webpack to add jquery as script tag before app script
// It will expose global variable jQuery and init jquery methods
'script!jquery/dist/jquery.min.js',
'./app/app.js'
]
},
output: {
path: path.join(__dirname, './public'),
filename: '[name].js',
},
resolve: {
root: __dirname,
extensions: ['', '.js'],
modulesDirectories: [
'node_modules',
'app'
],
},
externals: {
// This mean that require('jquery') will refer to global var jQuery
'jquery': 'jQuery'
},
plugins: [
// ProvidePlugin helps to recognize $ and jQuery words in code
// And replace it with require('jquery')
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
})
],
module: {
loaders: [
{
loader: 'babel-loader',
query: {
presets: ['es2015']
},
test: /\.js$/,
exclude: /(node_modules|bower_components)/
}
]
}
};
app/app.js
let webpack = require('webpack');
let path = require('path');
module.exports = {
entry: {
bundle: [
'./app/app.js'
]
},
output: {
path: path.join(__dirname, './public'),
filename: '[name].js',
},
resolve: {
root: __dirname,
extensions: ['', '.js'],
modulesDirectories: [
'node_modules',
'app'
],
},
externals: {
},
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
})
],
module: {
loaders: [
{
loader: 'babel-loader',
query: {
presets: ['es2015']
},
test: /\.js$/,
exclude: /(node_modules|bower_components)/
}
]
}
};
// Load libs
import angular from 'angular';
import ngRoute from 'angular-route';
import summernote from 'summernote';
import ngSummernote from 'angular-summernote/dist/angular-summernote.js';
// App
angular.module('app', [ngRoute, 'summernote'])
.config(function($routeProvider) {
// Router
$routeProvider
.when('/', {
template: '<summernote></summernote>'
});
});
let webpack = require('webpack');
let path = require('path');
module.exports = {
entry: {
bundle: [
// We tell webpack to add jquery as script tag before app script
// It will expose global variable jQuery and init jquery methods
'script!jquery/dist/jquery.min.js',
'./app/app.js'
]
},
output: {
path: path.join(__dirname, './public'),
filename: '[name].js',
},
resolve: {
root: __dirname,
extensions: ['', '.js'],
modulesDirectories: [
'node_modules',
'app'
],
},
externals: {
// This mean that require('jquery') will refer to global var jQuery
'jquery': 'jQuery'
},
plugins: [
// ProvidePlugin helps to recognize $ and jQuery words in code
// And replace it with require('jquery')
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
})
],
module: {
loaders: [
{
loader: 'babel-loader',
query: {
presets: ['es2015']
},
test: /\.js$/,
exclude: /(node_modules|bower_components)/
}
]
}
};
//加载libs
从“angular”导入angular;
从“角度路线”导入ngRoute;
从“summernote”导入summernote;
从“angular summernote/dist/angular summernote.js”导入ngSummernote;
//应用程序
角度模块('app',[ngRoute',summernote']))
.config(函数($routeProvider){
//路由器
$routeProvider
。当(“/”{
模板:“”
});
});
我找到了,但它仍处于打开状态
我做了一些调试,检查了“summernote”指令的“link”方法,并将“element”记录到控制台,它的proto对象不包含任何jquery方法,包括“summernote”方法为什么?如何使其工作?似乎jquery是按需使用的,没有在其他脚本之前加载,因此它不公开全局变量jquery,也不向元素附加适当的方法 下面的配置解决了这个问题 webpack.config.js
let webpack = require('webpack');
let path = require('path');
module.exports = {
entry: {
bundle: [
'./app/app.js'
]
},
output: {
path: path.join(__dirname, './public'),
filename: '[name].js',
},
resolve: {
root: __dirname,
extensions: ['', '.js'],
modulesDirectories: [
'node_modules',
'app'
],
},
externals: {
},
plugins: [
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
})
],
module: {
loaders: [
{
loader: 'babel-loader',
query: {
presets: ['es2015']
},
test: /\.js$/,
exclude: /(node_modules|bower_components)/
}
]
}
};
// Load libs
import angular from 'angular';
import ngRoute from 'angular-route';
import summernote from 'summernote';
import ngSummernote from 'angular-summernote/dist/angular-summernote.js';
// App
angular.module('app', [ngRoute, 'summernote'])
.config(function($routeProvider) {
// Router
$routeProvider
.when('/', {
template: '<summernote></summernote>'
});
});
let webpack = require('webpack');
let path = require('path');
module.exports = {
entry: {
bundle: [
// We tell webpack to add jquery as script tag before app script
// It will expose global variable jQuery and init jquery methods
'script!jquery/dist/jquery.min.js',
'./app/app.js'
]
},
output: {
path: path.join(__dirname, './public'),
filename: '[name].js',
},
resolve: {
root: __dirname,
extensions: ['', '.js'],
modulesDirectories: [
'node_modules',
'app'
],
},
externals: {
// This mean that require('jquery') will refer to global var jQuery
'jquery': 'jQuery'
},
plugins: [
// ProvidePlugin helps to recognize $ and jQuery words in code
// And replace it with require('jquery')
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery'
})
],
module: {
loaders: [
{
loader: 'babel-loader',
query: {
presets: ['es2015']
},
test: /\.js$/,
exclude: /(node_modules|bower_components)/
}
]
}
};
希望这将有助于澄清网页如何工作。如果我遗漏了什么,请分享您的想法和意见。谢谢。通过添加名为“webpack.config.js”的新文件并将上述代码粘贴到/src文件夹中,我也遇到了同样的问题,但无法解决。有人能帮我吗?