AngularJS: [$injector:nomod] 模块 'uiRouter' 不可用



我正在尝试在我的应用程序中使用angular-ui-router,但在导入时遇到问题

Error: [$injector:modulerr] Failed to instantiate module uiRouter due to:
Error: [$injector:nomod] Module 'uiRouter' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.

这是我的main.js

import angular from 'angular';
import uiRouter from 'angular-ui-router';
(function() {
function config($locationProvider, $stateProvider) {
$locationProvider
.html5Mode({
enabled: true,
requireBase: false
});
}
angular
.module('myApp', ['uiRouter'])
.config(config);
})();

我的index.html文件已声明应用<html lang="en" ng-app="myApp">我已经通过 npm 安装了这两个包

myApp@1.0.0 /Users/.../myApp
├── angular@1.6.5
├─┬ angular-ui-router@1.0.3
│ └── @uirouter/core@5.0.3

不知道它是否相关,但也在package.json中声明了它

"dependencies": {
"angular": "^1.6.5",
"angular-ui-router": "^1.0.3",

过去,我总是通过index.html中的<script>标签导入角度库,所以我不熟悉作为包导入。

另外,我正在阅读ui-router作为作用域包提供:https://ui-router.github.io/blog/uirouter-scoped-packages/但不知道它是否与这里相关(我也导入了此链接中描述的包,但似乎没有帮助(。

问题为什么angular-ui-router没有得到认可?

好的,我让它工作,但这不是我最初期望的。

我更改了main.js以阅读

import angular from 'angular';
import uiRouter from 'angular-ui-router';
(function() {
function config($stateProvider, $urlRouterProvider) {
/* $locationProvider  //ignore
.html5Mode({
enabled: true,
requireBase: false
}); */
}
angular
.module('myApp', ['ui.router'])
.config(config);
})();

解释一下:在这里,我同时使用了 ES6 导入功能和 Angular 依赖注入。我正在通过uiRouter从"angular-ui-router"导入,以便main.js可以访问此UI路由器对象。然后我在 Angular 依赖注入中使用 ui.router,因为这是 Angular 中 ui 路由器的内部名称。ngRoute 和 ui-router ($locationProvider在原始代码中的提供程序名称也不同。$urlRouterProvider这里(。

我根本不使用<script>标签来导入 Angular 库。

最新更新