html - 由于 css 中的 calc(width),React 应用程序中的“npm run build”失败?
问题描述
我正在构建一个带有来自 Bootstrap 的进度条的 React 应用程序。
<div className="progress">
<div className="progress-bar"
role="progressbar"
aria-valuenow="60"
aria-valuemin="0"
aria-valuemax="100"
style={{ width: "60%" }}
/>
</div>
和 CSS
.progress {
height: 5px;
background-color: #9c9c9c; }
.progress-bar {
height: 5px;
background-color: blue;
animation: animated-progress 3s ease-out; }
@keyframes animated-progress {
from {
width: 0; }
to {
width: calc(width); } }
我得到了从这个 StackOverflow答案calc(width)
中获取元素宽度的想法
它在开发过程中运行良好。但是,当我运行npm run build
生产命令时,出现以下错误
Lexical error on line 1: Unrecognized text.
Erroneous area:
1: width
^..^
CompileError: Begins at CSS selector undefined
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! personal-site@0.1.0 build: `react-scripts build`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the personal-site@0.1.0 build script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
我知道这个错误是由 引起的,因为如果我从 更改为calc(width)
,我就能够构建。正如您可能意识到的那样,做类似的事情并不是硬编码宽度的好方法。calc(width)
calc(60%)
calc(60%)
解决方案
错误说明了一切。width
不被识别,即它不存在。这就是为什么当你传入一个值时它会起作用。如果要使用css 变量,则必须声明它。
width: calc(width);
基本上,width:calc(undefined);
此外,对宽度进行硬编码不一定是坏事。与编程中的大多数事情一样,这取决于.
编辑
将值传递给 calc 没有任何意义。calc 对于计算表达式很有用,例如calc (50% - 10px)
. 如果你要传递一个百分比,只需设置百分比。
对评论的回应
我不相信它按照您的建议工作,但它不会轰炸您的页面。在您的沙箱中,我这样做了:
@keyframes animated-progress {
from {
width: 0;
}
to {
width: calc(thisDoesNotActuallyWork);
}
}
页面看起来一样。没有控制台错误,没有白屏——它看起来像这样:
这是使用时的样子width
。
我向您保证,如果您不声明变量并将其设置为某个值,代码往往无法工作。不过,它如何失败取决于。
推荐阅读
- string - Yii2比较并突出显示gridview中两个字符串或文本之间的差异
- sql - 在 where 部分使用 max() 的替代方法?
- html - 如何检索 angularfire 集合并在 html 上显示
- ionic-framework - 错误 对不起!ionic serve 只能在 Ionic 项目目录中运行。(当更新 Visual Studio 代码时)
- android - 解码时如何从android mediacodec检查关键帧
- c++ - 无法使用犰狳运行已编译的 cpp 代码,因为 dyld:未加载库
- tomcat - tomcat + openshift + liferay = 请求随机丢失了我所有的标头
- python - python writefile ImportError:没有名为“mainss_script”的模块
- javascript - 为什么我不应该在 reactjs 中使用 getBoundingClientRect()?
- mdx - MDX 方差平行期