Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
prod生成后未找到Angular 2\4资源路径文件_Angular_Module_Lazy Loading_Router - Fatal编程技术网

prod生成后未找到Angular 2\4资源路径文件

prod生成后未找到Angular 2\4资源路径文件,angular,module,lazy-loading,router,Angular,Module,Lazy Loading,Router,我有一个Angular应用程序,我在assets文件夹下放置了一个图像和自定义字体(src/assets/images/bg.jpg和src/assets/fonts/segoeui.ttf) 我在scss文件中引用了bg.jpg和segoeui.ttf,如下所示: styles.css: @font-face { font-family: "AppFont"; src: url("/assets/fonts/segoeui.ttf"); } @font-face {

我有一个Angular应用程序,我在assets文件夹下放置了一个图像和自定义字体(src/assets/images/bg.jpg和src/assets/fonts/segoeui.ttf)

我在scss文件中引用了bg.jpg和segoeui.ttf,如下所示:

styles.css:

@font-face {
    font-family: "AppFont";
    src: url("/assets/fonts/segoeui.ttf");
}

@font-face {
    font-family: "AppFont";
    src: url("/assets/fonts/segoeuib.ttf");
    font-weight: bold;
}

html,
body {
    font-family: 'AppFont', Verdana, Geneva, Tahoma, sans-serif;
}
login.scss:

#login {
    background: url("/assets/images/bg.jpg");
    background-position: center;
    background-attachment: fixed;
    background-size: cover;
    height: 100vh;
}
我也在使用延迟加载的模块。在开发模式下(当我运行ng serve时),一切都按预期工作。但是,当我发布一个prod构建(ng build--prod)时,就会创建一个包含所有js\css文件的dist文件夹。如果在服务器的虚拟目录中移动这些文件,则存储在资源中的图像和字体将指向服务器的根目录,而不是指向虚拟目录。例如,我的项目位于
myserver.com/myproject/index.html
,而这个应用程序在
myserver.com/assets/bg.jpg
中查找图像,而不是
myserver.com/myproject/assets/bg.jpg
。自定义字体也有同样的问题。你们有没有遇到过这个问题?如果是,请告诉我如何解决这个问题

之前,甚至构建的js\css文件都是从根目录而不是从虚拟目录引用的。为了解决这个问题,我将index.html从
更改为

版本详情:

@angular/cli: 1.0.1
node: 6.10.2
os: win32 x64
@angular/common: 4.1.1
@angular/compiler: 4.1.1
@angular/core: 4.1.1
@angular/forms: 4.1.1
@angular/http: 4.1.1
@angular/platform-browser: 4.1.1
@angular/platform-browser-dynamic: 4.1.1
@angular/router: 4.1.1
@angular/cli: 1.0.1
@angular/compiler-cli: 4.1.1

您需要更改所有路径,使它们与新的url路径相对。
/assets
中的
/
始终相对于域的根

例如:

src:url(“./assets/font/segoeuib.ttf”)
src:url(“../../assets/fonts/segoeuib.ttf”)


您还可以通过angular cli(如果您正在使用它)动态设置baseHref,正如我在此处所解释的那样。

谢谢Zze,在发布构建时使用-bh help设置baseHref。应用程序现在从正确的位置拾取图像\字体。@Zze,这个解决方案可以工作,但现在我有两份我的资产#1位于
dist/assets/
文件夹中#2.相同文件在dist根目录下的新副本:
dist/
。我不需要2份,怎么办????