Ale*_*dra 2 angularjs angular-ui-router gulp
我正在尝试使用 gulp-browsify 将所有依赖项加载到一个app-release.js文件中。
该文件构建良好,但是当我尝试注入@uiRouter依赖项时,我在浏览器中收到以下错误
好像我注射angular-route它工作正常。
这是代码
gulpfile.js
var gulp = require('gulp');
var rename = require('gulp-rename');
var browserify = require('gulp-browserify');
var buffer = require('gulp-buffer');
gulp.task('default', function() {
gulp.src('app.js')
.pipe(browserify({
insertGlobals: false,
debug: true
}))
.pipe(buffer())
.pipe(rename('app-release.js'))
.pipe(gulp.dest('app/'));
});
Run Code Online (Sandbox Code Playgroud)
应用程序.js
var angular = require('angular');
var uiRouter = require('@uirouter/angularjs');
var ngRoute = require('angular-route');
var app = angular.module("app",[uiRouter]);
app.config(function($stateProvider) {
var helloState = {
name: 'hello',
url: '/',
template: '<h3>hello world!</h3>'
}
var aboutState = {
name: 'about',
url: '/about',
template: '<h3>Its the UI-Router hello world app!</h3>'
}
$stateProvider.state(helloState);
$stateProvider.state(aboutState);
});
Run Code Online (Sandbox Code Playgroud)
索引.html
<!DOCTYPE html>
<html lang="en" ng-app="app">
<head>
<meta charset="UTF-8">
<title>Ui Router Test</title>
<!--<script type="text/javascript" src="/node_modules/angular/angular.js"></script>-->
<script src="app/app-release.js" type="application/javascript"></script>
</head>
<body>
<a ui-sref="hello">Hello</a>
<a ui-sref="about">About</a>
<p></p>
<!--<a href="#!red">Red</a>-->
<!--<a href="#!green">Green</a>-->
<!--<a href="#!blue">Blue</a>-->
<!--<div ng-view></div>-->
<ui-view></ui-view>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
感谢您提供帮助:)
我可能来不及帮助你,但也许这会帮助别人,问题是 uiRouter 模块的定义方式,你设置它的方式你的uiRouter变量保存一个对象,UiRouter 对象,但它期望要注入模块声明的字符串。
该字符串可以从默认导出中获得,而您获得的方式是通过声明var uiRouter = require('@uirouter/angularjs').default与您在上面执行的方式相反。
一旦你.default在最后声明你的变量将保存字符串 “ui.router”而不是 UI Router 对象,你现在可以在你做的时候传递这个变量。
请注意,如果您使用 ES6 样式的导入语句而不是 commonJs 要求,则不会遇到此问题。
TLDR
添加.default到 uiRouter require 调用的末尾。
| 归档时间: |
|
| 查看次数: |
1258 次 |
| 最近记录: |