这是https://github.com/systemjs/builder/issues/611的交叉发布
我正在尝试将我的Angular 2 rc 1应用程序与systemjs-builder 0.15.16
buildStatic
方法捆绑在一起。角度组件具有视图以及脚本外部的一个或多个样式表。在@Component
元数据中以两种方式之一引用它们
使用绝对路径:
@Component({
templateUrl: 'app/some.component.html',
styleUrls: ['app/some.component.css']
})
使用现在推荐的相对路径:
@Component({
moduleId: module.id,
templateUrl: 'some.component.html',
styleUrls: ['some.component.css']
})
我的应用使用相对路径,并且一切正常。今天,我决定使用systemjs-
builder的buildStatic
。只要存在相对路径,结果文件就会引发404错误,因为浏览器正在获取localhost/some.component.html
而不是localhost/app/some.component.html
。以下是我的
gulpfile.js* 的相关部分 *
var appDev = 'dev/';
var appProd = 'app/';
var typescript = require('gulp-typescript');
var tsProject = typescript.createProject('tsconfig.json');
var Builder = require('systemjs-builder');
var sourcemaps = require('gulp-sourcemaps');
gulp.task('build-ts', function () {
return gulp.src(appDev + '**/*.ts')
.pipe(sourcemaps.init())
.pipe(typescript(tsProject))
.pipe(sourcemaps.write())
.pipe(gulp.dest(appProd));
});
gulp.task('bundle',['build-ts'], function() {
var builder = new Builder('', './systemjs.config.js');
return builder
.buildStatic(appProd + '/main.js', appProd + '/bundle.js', { minify: false, sourceMaps: true})
.then(function() {
console.log('Build complete');
})
.catch(function(err) {
console.log('Build error');
console.log(err);
});
});
使用相对路径,如果我只运行build- ts
gulp任务并浏览“常规”方式,则一切正常。如果我运行bundle
gulp任务并尝试使用该bundle.js
文件浏览该应用程序,则该应用程序尝试加载外部模板和样式表的任何地方都会发生404错误。我尝试通过更改templateUrl: 'some.component.html'
为templateUrl: './some.component.html'
无效来明确说明路径的相对性质。硬编码绝对路径似乎是一个坏主意。我想念什么?
几天后,我从github上的systemjs成员那里得到了有益的答复。
诀窍是什么:在systemjs-builder buildStatic
方法的配置对象中,将其设置encodeNames
为false
。所以线…
.buildStatic(
appProd + '/main.js',
appProd + '/bundle.js',
{ minify: false, sourceMaps: true}
)
成了…
.buildStatic(
appProd + '/main.js',
appProd + '/bundle.js',
{ minify: false, sourceMaps: true, encodeNames:false}
)
tsconfig.json
{
"compilerOptions": {
"target": "ES5",
"module": "commonjs",
"moduleResolution": "node",
"sourceMap": true,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"removeComments": false,
"noImplicitAny": false,
"outDir": "./app"
},
"filesGlob": [
"./dev/**/*.ts",
"!./node_modules/**/*.ts"
],
"exclude": [
"node_modules",
"typings"
]
}
这是密码 我希望一个包含2个元素的数组第一个是空字符串,第二个是“\test”,因为它在javascript中工作得非常好 但不是预期的输出,而是我如何获得完整的:( 不知道我做错了什么。。。
我尝试将Codeigniter与AngularJS路由一起使用,它正在工作,但我需要不使用散列。我使用以下代码: 但当我刷新页面时,跳转到404。
问题内容: 如果使用绝对路径,则无法将整个目录移动到新位置。如果使用相对路径,则无法将单个文件移动到新位置。 这里有什么解决方案?您是否设置了一个包含根路径并从那里开始的配置文件?还是您有类似的规则:永不移动文件? 我在某些项目中看到人们使用dirname( FILE )。我的意思是,为什么不简单地将其删除,因为目录名还是相对的(取决于文件所在的位置)? 问题答案: 您应该使用一个配置文件,该配置
问题内容: 我希望我的Web应用程序使用以下路径登录文件:webapp / logs / 我可以在log4j.properties文件中设置绝对路径,但是生产环境的目录结构将有所不同。有什么办法可以做到吗? 这是我的方法: 这是将日志打印到我的eclipse目录(c:// eclipse)中名为log.log的文件中。我正在使用Tomcat 6。 问题答案: log4j能够扩展系统属性,因此,如果
问题内容: 我正在编写一个程序,其中的一个组件必须能够采用给定的路径(例如或)和基于该位置的相对路径(例如或或)并产生绝对路径由相对路径暗示。考虑以下目录树。 该文件包含一个链接,如。该计划获得通过或,并将其与结合来获得。 同样,文件具有链接,程序需要从该链接返回。有合理的方法做到这一点吗? 谢谢。:) 编辑: 谢谢斯蒂芬·温伯格!对于未来的每个人,这是我使用的代码。 问题答案: 在与使用时应该做
我在我的本地主机上开发了一个laravel应用程序,运行非常好。我正试图使用Ubuntu 20.04上的nginx将其部署到AWS Lightsail实例上。我已经上传了我的laravel应用程序,并将nginx根目录更改为laravelapp/public。 主索引页(着陆页)工作正常,但我的路线都不工作(即 /login, /about等)。当我试图访问任何路线时,我得到一个404未找到错误。