[英]Angular 8: access the assets folder when running ng build --prod --base-href './project1'
我的客户希望我使用以下配置在同一个ngnix
服务器上部署多个项目。
location /project1/ {
alias /usr/local/var/www/project1/;
try_files $uri$args $uri$args/ /project1/index.html;
}
在上面的配置中,我无法访问资产文件夹,因为它位于 project1 文件夹中,我尝试从域示例 src 的根目录访问它:
url('/assets/fonts/texta/Texta-Regular/Texta-Regular.eot')
当我使用 src: url('./assets/fonts/texta/Texta-Regular/Texta-Regular.eot')
更改路径时,我在构建生产版本时遇到以下问题
错误在 ./src/styles.scss 模块构建失败(来自 ./node_modules/mini-css-extract-plugin/dist/loader.js):ModuleError:模块错误(来自 ./node_modules/postcss-loader/src/index .js): (Emitted value 而不是 Error 的实例) CssSyntaxError: /Users/Desktop/personal/projects/example/src/styles.scss:10115:13: 无法解析 './assets/fonts/texta/ '/Users/Desktop/personal/projects/example/src' 中的 Texta-Regular/Texta-Regular.eot%3F'
您不能使用从“/”开始的绝对路径,因此您有两个选项:
1- 使用相对路径(使用“../”返回层次结构)。 这个有点麻烦,但很容易做到。
2- 在 tsconfig.json 的 compilerOptions 中定义资产文件夹,如下所示:
"compilerOptions": {
"baseUrl": ".",
"paths": {
"@assets/*": ["./src/assets/*"],
}
}
然后您可以在您的网址中使用“@assets/”。 记下 baseUrl 和 assets url,并根据您的项目结构对其进行相应更改。
希望这可以帮助。
我编译 url('./assets/fonts/texta/Texta-Regular/Texta-Regular.eot') 没有问题。 请检查 Texta-Regular.eot 的存在。
angular.json 中的 rebaseRootRelativeCssUrls 标志确实对我有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.