我遇到了 iframe 问题。直到今天,一切都按预期进行。今天我添加了一个非常简单的 Modal 组件,不知何故 iframe 开始出现。当我编辑文件并完成热重载时会出现它。此外,对于此问题,它在控制台中显示错误为“Uncaught ReferenceError:进程未定义”。有人可以帮我解决这个问题吗?
import React, {useEffect} from 'react';
import ReactDOM from "react-dom";
import Close from "../static/assets/close-white.svg"
const trapStyles = {
position: 'absolute',
opacity: 0
}
const Test = () => {
return ReactDOM.createPortal(
<div data-react-modal-body-trap="" tabIndex="0" style={trapStyles}/>,
document.getElementById("app")
)
}
const Modal = ({ open, onClose, children }) => {
useEffect(() => {
if (open)document.getElementById("app").classList.add("ReactModal__Body--open");
return () => {
document.getElementById("app").classList.remove("ReactModal__Body--open")
}
})
if (!open) return null
return ReactDOM.createPortal(
<>
<Test />
<div className="ReactModal__Overlay--after-open">
<div className="modal-form-page" …Run Code Online (Sandbox Code Playgroud) Github在我的一个存储库上给了我这个错误.
We found a potential security vulnerability in one of your dependencies.
A dependency defined in ./package-lock.json has known security vulnerabilities
and should be updated.
Run Code Online (Sandbox Code Playgroud)
我们的package.json文件中没有定义依赖项.根据我的理解,删除package-lock.json文件并重新生成它并不是一个好习惯.但是,我看不到任何其他方法来解决此问题.如果我解除此安全漏洞,它将在几天后再次出现.有任何想法吗?谢谢!
如果我的包有这些依赖项
{ "name": "my-package",
"dependencies": { "foobar":"~1.0.3", "baz":"2.0.9" }
Run Code Online (Sandbox Code Playgroud)
并且foobar包具有这些依赖性
{ "name": "foobar",
"dependencies": { "baz":"^2.0.0" }
Run Code Online (Sandbox Code Playgroud)
和最近发布的版本baz是2.1.0,第一次运行yarn将安装baz@2.1.0在foobar/node_modules.
如何强制纱线使用baz@2.0.9包装foobar?
我的理解是这可以使用npm shrinkwrap(这个问题).
我的问题的摘要可能是:Yarn创建可重复的,确定性的安装,但我如何自定义该安装?
假设你要安装的库lib-a具有依赖性dep-1和dep-2.如果lib-a已在其package.json中声明使用的dep-2那个版本已过期(假设它在刚刚出现的节点0.8.0上不起作用),但有一个分支dep-2适用于节点0.8.0 -分支名称node0.8.0.
所以等式中的包是:
git://github.com/user-a/lib-a
git://github.com/user-b/dep-1
git://github.com/user-c/dep-2
git://github.com/user-c/dep-2#node0.8.0
Run Code Online (Sandbox Code Playgroud)
有没有办法告诉NPM安装lib-a,但使用dep-2#node0.8.0而不是dep-2?
使用NPM,您可以安装项目的特定分支,如下所示:
npm install git://github.com/user-c/dep-2#node0.8.0
Run Code Online (Sandbox Code Playgroud)
如果我要自定义package.json lib-a,你可以告诉它使用dep-2#node0.8.0这样:
{
"name": "lib-a",
"dependencies": {
"dep-1": ">= 1.5.0",
"dep-2": "git://github.com/user-c/dep-2#node0.8.0"
}
}
Run Code Online (Sandbox Code Playgroud)
通过修改package.json,您可以运行
npm install lib-a
Run Code Online (Sandbox Code Playgroud)
它将安装节点0.8.0兼容dep-2分支.但是,这需要我有权修改lib-a,对于我的具体情况,我没有.从技术上讲,我可以fork lib-a并对package.json进行上述更改.但在我的具体情况下,lib-a是另一个库的依赖,所以我必须分叉它引用的项目,然后......
所以问题是,有没有办法告诉NPM安装lib-a,并告诉它使用node0.8.0分支dep-2?像这样的东西:
npm install lib-a --overrides dep-2:git://github.com/user-c/dep-2#node0.8.0
Run Code Online (Sandbox Code Playgroud)
那将是真棒.如果这是不可能的,那将是很好的知道,所以我可以准备自己必须分叉/定制项目链.
尝试 npm install vue-mapbox mapbox-gl 并且我收到依赖树错误。
我正在使用 Vuetify 运行 Nuxt SSR,并且在运行此安装并出现此错误之前没有安装任何与 Mapbox 相关的东西。
38 error code ERESOLVE
39 error ERESOLVE unable to resolve dependency tree
40 error
41 error While resolving: [1mexample[22m@[1m1.0.0[22m
41 error Found: [1mmapbox-gl[22m@[1m1.13.0[22m[2m[22m
41 error [2mnode_modules/mapbox-gl[22m
41 error [1mmapbox-gl[22m@"[1m^1.13.0[22m" from the root project
41 error
41 error Could not resolve dependency:
41 error [35mpeer[39m [1mmapbox-gl[22m@"[1m^0.53.0[22m" from [1mvue-mapbox[22m@[1m0.4.1[22m[2m[22m
41 error [2mnode_modules/vue-mapbox[22m
41 error [1mvue-mapbox[22m@"[1m*[22m" from the root project
41 error
41 error Fix the upstream dependency conflict, or …Run Code Online (Sandbox Code Playgroud) 是否有相当于纱线分辨率功能的npm ?在npm package.json docs中没有提到它.
例如,我想在3.3.2安装lerna@3.3.2及其中一个依赖项(@ lerna/publish).目前使用像这样的纱线,但更喜欢使用npm而不是手动更改package-lock.json或类似的任何狡猾.
"devDependencies": {
"lerna": "3.3.2",
},
"resolutions": {
"@lerna/publish": "3.3.2"
}
Run Code Online (Sandbox Code Playgroud) Github已将我的应用锁定文件中的依赖项标记为易受攻击.
要修复它,我应该将该软件包更新到更新的版本.
如果我对易受攻击的软件包没有任何控制,我该怎么做呢,因为它嵌套在依赖树中?
抱歉,如果这是一个非常基本的问题,但我似乎没有找到任何有用的.
我在解决由 识别的 ReDoS 漏洞时遇到问题npm audit。我的应用程序有一个嵌套的子依赖项ansi-html,很容易受到攻击,但不幸的是,维护者似乎擅离职守了。正如您在 Github 问题的评论部分中看到的,为了解决这个问题,社区对位于ansi-html-community此处的存储库进行了分叉存储库进行了分叉,以解决此漏洞。
因此,我想将所有嵌套引用替换ansi-html为ansi-html-community。
我的正常使用策略npm-force-resolutions似乎无法完全覆盖不同包的嵌套子依赖项,而只能覆盖具有不同版本号的相同包。我已经研究了几个小时,但不幸的是,我发现解决这个问题的唯一方法似乎是使用纱线,我现在正在认真考虑使用yarn而不是npm。然而,这并不理想,因为我们的整个 CI/CD 管道都配置为使用 npm。
有谁知道有任何其他方法可以完成嵌套子依赖包替换/解析而不必切换到使用yarn?
这些是我能够找到的感兴趣的问题,但不幸的是,他们往往只讨论覆盖包版本号的方法,而不是包本身。
npm shrinkwrap(不理想):在阅读了一堆关于这个问题的文章并遵循这篇非常有用的文章之后:What's the Difference Between dependency, devDependencies and peerDependencies in npm package.json file?
我知道依赖项应该引用每个运行时库,而 devDependency 引用每个对开发依赖项有用的东西。
但我现在很困惑。对于生产用途,我将需要ng build --production我的 Angular 应用程序。如果我这样做npm install --production,我什至无法编译ng build --production。我需要安装npm install每个 devDependency。知道这一点后,我尝试将所有内容都放在 devDependency 下,然后我做了一个ng build --prod,生成的[dist]文件夹包含所需的所有内容,并且可以作为完整的角度应用程序。
所以,第一个问题是:除了在运行时库和开发库之间进行“纸上”区别之外,为什么我应该使用依赖项?
其他问题:为了避免依赖项的依赖项上的漏洞,我可以通过将此库放入 package.json 中来强制使用特定版本(只要主要版本相同)。但我想避免将此库放在依赖项或 devDependency 中,我应该将此库放在 peerDependency 下吗?可选依赖项 ? 捆绑依赖关系 ?
感谢您对此的任何意见。
编辑
需要示例 package.json:
{
"name": "ANGULAR_PROJECT",
"version": "X.Y.Z",
"repository": {
"type": "git",
"url": "A_GIT_URL"
},
"scripts": {
"ng": "ng",
"test": "ng test",
"e2e": …Run Code Online (Sandbox Code Playgroud) npm ×9
node.js ×5
dependencies ×2
npm-install ×2
yarnpkg ×2
angular ×1
github ×1
javascript ×1
mapbox ×1
npm-ci ×1
package.json ×1
reactjs ×1