目前,我在一个学校项目工作,想要用angularJs和流星显示一些图表。
我想使用ui-router插件。但是当我尝试使用它时,我收到以下错误:
Error: only one instance of babel/polyfill is allowed
at Object.eval (eval at <anonymous> (http://localhost:3000/packages/jquery.js?hash=22a0055f59bd150c435c5aba34c7c59076b8bcd9:397:22), <anonymous>:2872:9)
at Object.1.180 (eval at <anonymous> (http://localhost:3000/packages/jquery.js?hash=22a0055f59bd150c435c5aba34c7c59076b8bcd9:397:22), <anonymous>:2875:4)
at s (eval at <anonymous> (http://localhost:3000/packages/jquery.js?hash=22a0055f59bd150c435c5aba34c7c59076b8bcd9:397:22), <anonymous>:2863:254)
at e (eval at <anonymous> (http://localhost:3000/packages/jquery.js?hash=22a0055f59bd150c435c5aba34c7c59076b8bcd9:397:22), <anonymous>:2863:425)
at eval (eval at <anonymous> (http://localhost:3000/packages/jquery.js?hash=22a0055f59bd150c435c5aba34c7c59076b8bcd9:397:22), <anonymous>:2863:443)
at eval (eval at <anonymous> (http://localhost:3000/packages/jquery.js?hash=22a0055f59bd150c435c5aba34c7c59076b8bcd9:397:22), <anonymous>:7043:4)
at eval (eval at <anonymous> (http://localhost:3000/packages/jquery.js?hash=22a0055f59bd150c435c5aba34c7c59076b8bcd9:397:22), <anonymous>:7050:3)
at eval (<anonymous>)
at http://localhost:3000/packages/jquery.js?hash=22a0055f59bd150c435c5aba34c7c59076b8bcd9:397:22
at Function.globalEval (http://localhost:3000/packages/jquery.js?hash=22a0055f59bd150c435c5aba34c7c59076b8bcd9:398:7) <div ui-view="" class="ng-scope" data-ng-animate="1">
我也收到了这个警告:
Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check https://xhr.spec.whatwg.org/.
我真的不知道这条消息想告诉我什么。我没有多次加载babel / polyfill。在收到此消息之前,我甚至都不知道这个插件。
这是我的带有ui-router代码的main.js:
import angular from 'angular';
import angularMeteor from 'angular-meteor';
import uiRouter from 'angular-ui-router';
import ngMaterial from 'angular-material';
import '../../../node_modules/angular-material/angular-material.css'
import '../own.css';
import template from './main.html';
import { name as Navigation } from '../navigation/navigation';
import {name as Toolbar} from '../toolbar/toolbar';
import {name as View1} from '../view1/view1';
import {name as View2} from '../view2/view2';
class Main {}
const name = 'main';
// create a module
export default angular.module(name, [
angularMeteor,
uiRouter,
Navigation,
Toolbar,
View2,
View1,
ngMaterial
]).component(name, {
template,
controllerAs: name,
controller: Main
})
.config(config);
function config($mdThemingProvider,$urlRouterProvider,$stateProvider ) {
'ngInject';
$urlRouterProvider.otherwise('view1');
$stateProvider
.state('view1', {
url: '/',
templateUrl: 'test.html'
});
$mdThemingProvider
.theme('default')
.primaryPalette('orange')
.accentPalette('deep-orange')
.warnPalette('red');
}
这是我应该注入视图的main.html的代码:
<div layout="column" style="height: 100%">
<toolbar scroll></toolbar>
<section layout="row" flex>
<navigation></navigation>
<md-content flex layout-padding style="margin-top: 75px">
<div ui-view=""></div>
</md-content>
</section>
没有ui-router,它可以正常工作!
这里有什么问题?
答案 0 :(得分:0)
很可能你有一个模块需要babel-polyfill进行编译,而且它正在用多个版本的babel污染你的全局命名空间。因此,您要么告诉babel忽略node_modules目录,要么找出哪个依赖项需要babel-polyfill并阻止它。
最后一个选项是使用运行时转换器编译代码。
答案 1 :(得分:0)
我找到了解决方案。
$ stateprovider出了点问题。
我复制了这段代码
$stateProvider
.state('view1', {
url: '/',
templateUrl: 'test.html'
});
进入视图并将其更改为:
function config($stateProvider) {
'ngInject';
$stateProvider
.state('view1', {
url: '/view1',
template: '<view1></view1>'
});
}
(最后一个代码示例已经是我项目的完成代码)。所以现在不再有templateUrl,而是模板。
我真的不知道为什么会这样,但它确实有效。也许有人可以解释这个?
答案 2 :(得分:0)
尝试删除本地文件
render()
但是,它对我有用。