我有一个开发和生产环境,其中我的URL不同:
生产:
www.exmaple.com/page
发展:
dev.environment/project/page
我知道我可以在AngularJS中使用
<base href='/project/' />
但这对我没有帮助。在加载AngularJS应用程序之前,我先获取一个配置文件(在app.js中,使用以下.run
语句,该语句读取具有以下环境的变量:
]).run([
'$rootScope',
'$http',
function (
$rootScope,
$http
) {
var configDeferred = $q.defer();
// fetch config and set the API
$http.get('config.json').then(function(response) {
$rootScope.config = response.data;
configDeferred.resolve();
});
// Wait for the config to be loaded, then go to state
$rootScope.$on('$stateChangeStart', function (event, next, current) {
event.preventDefault();
$q.all([configDeferred.promise]).then(function() {
$state.transitionTo(next.name);
return;
});
});
有没有一种方法可以基于AngularJS中的配置文件(可能带有.htaccess)来动态设置基本URL?
尝试1: 尝试通过获取配置,.run
并通过ng-href设置基本网址:
在我的app.js中编辑以下代码行:
// fetch config and set the API
$http.get('config.json').then(function(response) {
$rootScope.config = response.data;
$rootScope.baseUrl = response.data.baseUrl; // '/project/'
configDeferred.resolve();
});
在我的index.html中:
<base ng-href="{{baseUrl}}" />
看来这是行不通的:当我将tag的href属性更改为ng-
href时,它将正确加载内容,但将URL更改为dev.environment/page
而不是dev.environment/project/page
更新: 配置文件:
{
"mode": "development",
"baseUrl": "/project/"
}
我个人会用来做这种事情grunt
。
当我运行我的angular-app时,我有多个任务:
> grunt run --target=dev
> grunt run --target=prod
> grunt build --target=dev
> grunt build --target=prod
> etc...
然后在grunt-preprocess
模块的帮助下进行字符串替换:
我的constants.tpl.js
文件被解析:
[...]
baseUrl: '/* @echo ENV_WS_URL */',
[...]
并填充了网址。
有无穷的可能性(字符串替换,文件复制等)。
使用grunt进行操作可确保例如dev config文件不会进入生产环境。
如果您有兴趣,我可以提供更多详细信息,但我只想向您展示一种不同的方法。
编辑gruntFile示例:
'use strict';
module.exports = function(grunt) {
/**
* Retrieving current target
*/
var target = grunt.option('target') || 'dev';
var availableTargets = [
'dev',
'prod'
];
/**
* Load environment-specific variables
*/
var envConfig = grunt.file.readJSON('conf.' + target + '.json');
/**
* This is the configuration object Grunt uses to give each plugin its
* instructions.
*/
grunt.initConfig({
env: envConfig,
/*****************************************/
/* Build files to a specific env or mode */
/*****************************************/
preprocess: {
options: {
context: {
ENV_WS_URL: '<%= env.wsUrl %>'
}
},
constants: {
src: 'constants.tpl.js',
dest: 'constants.js'
}
},
karma: {
unit: {
configFile: '<%= src.karma %>',
autoWatch: false,
singleRun: true
},
watch: {
configFile: '<%= src.karma %>',
autoWatch: true,
singleRun: false
}
}
});
/****************/
/* Plugins load */
/****************/
grunt.loadNpmTasks('grunt-preprocess');
/*******************/
/* Available tasks */
/*******************/
grunt.registerTask('run', 'Run task, launch web server for dev part', ['preprocess:constants']);
};
现在,命令:
> grunt run --target=dev
将使用网址创建一个新文件
我有一个Spring Boot应用程序,它将在各种环境中运行,根据它运行的环境,它将连接到不同的数据库。我有几个文件,每个环境都有一个,如下所示: : : 在我的每个环境中,我都有一个名为的环境变量,它被设置为它所处的环境类型,例如或(文件的名称与环境名称完全匹配)。 如何让spring boot读取这个环境变量并自动选择正确的文件?我不想因为这个包的部署方式(它不会作为jar运行)而不得不执行整
问题内容: 需要基于构建环境配置来设置标签的href值。 例如: 分期应有 产品应具有 当前设置: 生成命令: .env.staging.js: index.html: 在index.html中,这似乎不起作用。虽然类似的设置适用于JS文件 (可能是因为将JS文件解析并捆绑到一个文件中,并且捆绑程序在该时间点读取值) 尝试过的事情: index.html: (类似于PUBLIC_URL变量) 与浏
我想使用环境变量在Postman中设置基本授权。因为我对不同的API调用有不同的授权用户名和密码。 我的邮递员设置如下: 在授权选项卡中:我在标题选项卡中选择了无授权 :密钥=值= 在正文选项卡中: 在“预先请求”选项卡中: 在测试选项卡中: 然后我发送了请求,但未获授权。 之后,我已将身份验证类型设置为具有用户名和密码的基本身份验证,它工作正常,并且我从响应中得到了我想要的内容。
问题内容: 我正在使用以下maven pom.xml代码片段从文件jenkins / version.properties中读取名为BUILD_NUMBER的属性。 Jenkins还有一个名为$ BUILD_NUMBER的环境变量。我有尝试使用$ BUILD_NUMBER的子pom.xmls,它一直在为$ BUILD_NUMBER选取Jenkins环境变量值,而不是从jenkins / versi
问题内容: 我开始研究一个项目,它使用了Github私有存储库中的一些私有模块,每当我尝试运行它时,都会出现以下错误: 验证github.com/repoURL/go- proto@v2.86.0+incompatible/go.mod:github.com/repoURL/go- proto@v2.86.0+incompatible/go.mod:阅读https://sum.golang。 or
问题内容: 我的视图中有三个按钮。在viewDidLoad()中设置cornerRadus之后:我在日志中收到以下错误消息: 问题: 如何设置CG_CONTEXT_SHOW_BACKTRACE环境变量? 或者如何解决此警告? 好吧,现在我已经从消息中得到了回溯。这对我来说没有任何意义。请帮忙… 问题答案: 这是9b5中的错误:https://forums.developer.apple.com/t