J'utilise Bootstrap V4 et l'erreur suivante est enregistrée dans la console.
Erreur: les infobulles d’initialisation nécessitent Tether ( http://github.hubspot.com/tether/ )
J'ai essayé de supprimer l'erreur en installant Tether mais cela n'a pas fonctionné. J'ai «installé» Tether en incluant les lignes de code suivantes;
<link rel="stylesheet" href="http://www.atlasestateagents.co.uk/css/tether.min.css">
<script src="http://www.atlasestateagents.co.uk/javascript/tether.min.js"></script>
Ai-je 'installé' correctement?
Quelqu'un peut-il m'aider à supprimer cette erreur?
Si vous souhaitez voir l'erreur sur mon site, cliquez sur ici et chargez votre console.
Depuis la bêta, Bootstrap 4 ne dépend pas de Tether mais de Popper.js. Tous les scripts (doivent être dans cet ordre):
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.3/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.1/js/bootstrap.min.js"></script>
Voir le documentation en cours pour les dernières versions de script.
Bootstrap 4 alpha nécessite Tether _, vous devez donc inclure tether.min.js
avant que vous incluez bootstrap.min.js
, par exemple.
<script src="https://npmcdn.com/[email protected]/dist/js/tether.min.js"></script>
<script src="https://npmcdn.com/[email protected]/dist/js/bootstrap.min.js"></script>
Si vous utilisez Webpack:
webpack.config.js:
plugins: [
<... your plugins here>,
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
"window.jQuery": "jquery",
"window.Tether": 'tether'
})
]
Si vous utilisez npm et browserify:
// es6 imports
import tether from 'tether';
global.Tether = tether;
// require
global.Tether = require('tether');
Personnellement, j'utilise un petit sous-ensemble de fonctionnalités Bootstrap et je n'ai pas besoin de joindre Tether.
Cela devrait aider:
window.Tether = function () {
throw new Error('Your Bootstrap may actually need Tether.');
};
Si vous souhaitez éviter le message d'erreur et que vous n'utilisez pas les info-bulles Bootstrap, vous pouvez définir window.Tether avant de charger Bootstrap.
<script>
window.Tether = {};
</script>
<script src="js/bootstrap.min.js"></script>
Vous devriez faire ma ligne directrice:
1. Ajouter la source ci-dessous dans Gemfile
source 'https://Rails-assets.org' do
gem 'Rails-assets-tether', '>= 1.1.0'
end
Exécuter la commande:
installation groupée
Ajoutez cette ligne après jQuery dans application.js.
// = nécessite jquery
// = nécessite une attache
Redémarrez le serveur Rails.
Installez le câble via npm comme ci-dessous
npm install tether --save-dev
puis ajoutez le lien à votre code HTML ci-dessus bootstrap comme ci-dessous
<script src="node_modules/tether/dist/js/tether.min.js"></script>
<script src="jspm_packages/github/twbs/[email protected]/js/bootstrap.js"></script>
pour webpack j'ai résolu ceci avec (webpack.config.js):
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
"window.jQuery": "jquery",
Tether: 'tether'
})
Une note supplémentaire. Si vous vérifiez le fichier javascript non compressé, vous trouverez la condition:
if(window.Tether === undefined) {
throw new Error('Bootstrap tooltips require Tether (http://github.hubspot.com/tether)')
}
Le message d'erreur contient donc les informations requises.
Vous pouvez télécharger les archives à partir de link .
Version non compressée:
https://rawgit.com/HubSpot/tether/master/src/js/tether.jshttps://rawgit.com/HubSpot/tether/master/dist/css/tether. css
En utilisant webpack, je l'ai utilisé dans webpack.config.js
:
var plugins = [
...
new webpack.ProvidePlugin({
$: "jquery",
jQuery: "jquery",
'window.jQuery': 'jquery',
'window.Tether': 'tether',
tether: 'tether',
Tether: 'tether'
})
];
Il semble que Tether
était celui qu'il cherchait:
var Tooltip = function ($) {
/**
* Check for Tether dependency
* Tether - http://tether.io/
*/
if (typeof Tether === 'undefined') {
throw new Error('Bootstrap tooltips require Tether (http://tether.io/)');
}
J'avais ce problème avec requirejs en utilisant la dernière version de boostrap 4. J'ai fini par définir:
<script>
window.Tether = {};
</script>
dans ma balise de tête html pour tromper la vérification de bootstrap. J'ai ensuite ajouté une deuxième instruction require juste avant que require charge mon application, puis ma dépendance à l'amorçage:
require(['tether'], function (Tether) {
window.Tether = Tether;
});
require([
"app",
], function(App){
App.initialize();
});
Si vous utilisez les deux en tandem, vous ne devriez avoir aucun problème à utiliser la version actuelle de bootstrap 4 alpha.
Fonctionne pour generator-aspnetcore-spa et bootstrap 4.
// ===== file: webpack.config.vendor.js =====
module.exports = (env) => {
...
plugins: [
new webpack.ProvidePlugin({ $: 'jquery',
jQuery: 'jquery',
'window.jQuery': 'jquery',
'window.Tether': 'tether',
tether: 'tether',
Tether: 'tether' }),
// Maps these identifiers to the jQuery package
// (because Bootstrap expects it to be a global variable)
...
]
};
Pour le Webpack 1 ou 2 avec Bootstrap 4, vous avez besoin
new webpack.ProvidePlugin({
$: 'jquery',
jQuery: 'jquery',
Tether: 'tether'
})
Si vous utilisez Brunch, vous pouvez ajouter ceci à la fin de votre brunch-config.js
:
npm: {
enabled: true,
globals: {
$: 'jquery', jQuery: 'jquery', 'Tether': 'tether'
}
}
Si vous utilisez le chargeur AMD require.js:
// path config
requirejs.config({
paths: {
jquery: '//cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/core.js',
tether: '//cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min',
bootstrap: '//cdnjs.cloudflare.com/ajax/libs/Twitter-bootstrap/4.0.0-alpha.6/js/bootstrap.min',
},
shim: {
bootstrap: {
deps: ['jquery']
}
}
});
//async loading
requirejs(['tether'], function (Tether) {
window.Tether = Tether;
requirejs(['bootstrap']);
});
Je recommande de suivre les instructions de la documentation Bootstrap 4 :
Copiez-collez la feuille de style
<link>
dans votre<head>
avant tout autre feuilles de style pour charger notre CSS.
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
Ajoutez nos plugins JavaScript, jQuery et Tether vers la fin de votre pages, juste avant la balise de fermeture. Assurez-vous de placer jQuery et Tether en premier, car notre code en dépend. Bien que nous utilisions jQuery’s Dans nos docs, la version complète est également prise en charge.
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>
Et si vous utilisez webpack, vous aurez besoin du plugin expose. Dans votre webpack.config.js, ajoutez ce chargeur
{
test: require.resolve("tether"),
loader: "expose?$!expose?Tether"
}
Pour ajouter à la réponse de @ adilapapaya. Pour les utilisateurs de ember-cli
spécifiquement, installez tether
avec
bower install --save tether
puis incluez-le dans votre fichier ember-cli-build.js
avant le bootstrap, comme ceci:
// tether (bootstrap 4 requirement)
app.import('bower_components/tether/dist/js/tether.min.js');
// bootstrap
app.import('bower_components/bootstrap/scss/bootstrap-flex.scss');
app.import('bower_components/bootstrap/dist/js/bootstrap.js');
Pour les gars qui le font via UMD, et compilent via require.js
, il existe une solution laconique.
Dans le module, qui requiert tether
en tant que dépendance, qui charge Tooltip
en tant que UMD, devant la définition du module, il suffit de placer un court extrait de code sur la définition de Tether:
// First load the UMD module dependency and attach to global scope
require(['tether'], function(Tether) {
// @todo: make it properly when boostrap will fix loading of UMD, instead of using globals
window.Tether = Tether; // attach to global scope
});
// then goes your regular module definition
define([
'jquery',
'tooltip',
'popover'
], function($, Tooltip, Popover){
"use strict";
//...
/*
by this time, you'll have window.Tether global variable defined,
and UMD module Tooltip will not throw the exception
*/
//...
});
Ce court extrait au tout début peut en fait être placé à n’importe quel niveau supérieur de votre application, la chose la plus importante à appeler - avant de l’utiliser avant l’utilisation réelle des composants bootstrap
avec une dépendance Tether
.
// ===== file: tetherWrapper.js =====
require(['./tether'], function(Tether) {
window.Tether = Tether; // attach to global scope
// it's important to have this, to keep original module definition approach
return Tether;
});
// ===== your MAIN configuration file, and dependencies definition =====
paths: {
jquery: '/vendor/jquery',
// tether: '/vendor/tether'
tether: '/vendor/tetherWrapper' // @todo original Tether is replaced with our wrapper around original
// ...
},
shim: {
'bootstrap': ['tether', 'jquery']
}
UPD: Dans Boostrap 4.1 Stable, ils ont remplacé Tether, avec Popper.js , voir la documentation sur l’utilisation .
J'ai eu le même problème et voici comment je l'ai résolu ... Je suis sur Rails 5.1.0rc1
Assurez-vous d’ajouter require jquery et tether à l’intérieur de votre fichier application.js, ils doivent être au sommet, comme celui-ci.
//= require jquery
//= require tether
Assurez-vous simplement d'avoir la longe installée
Méthode n ° 1: Téléchargez de Ici et insérez-le dans vos projets, ou
Method # 2: utilisez le code ci-dessous avant la source du script d'amorçage:
<script src="https://npmcdn.com/[email protected]/dist/js/tether.min.js"></script>
Pour vous, utilisateurs de Laravel Mix, exécutant Bootstrap4, vous devez exécuter
npm installer tether --save
Ensuite, mettez à jour votre resources/assets/js/bootstrap.js
pour charger Tether et l'amener à l'objet window.
Voici à quoi ressemble le mien: (Remarque: je devais aussi exécuter npm install popper.js --save
)
window.$ = window.jQuery = require('jquery');
window.Popper = require('popper.js').default;
window.Tether = require('tether');
require('bootstrap');