如何撤消/恢复“npm 审计修复”

Sor*_*day 5 npm

正如标题所说。我已经npm audit fix在cmd中运行了。现在我无法运行,npm run build因为它给了我错误。如何撤消npm audit fix?有这样的命令吗?

运行后,npm audit fix我收到此错误:

D:\SUBLIME\REACT>npm run build

> uploadpublish@1.0.0 build D:\SUBLIME\REACT
> webpack --mode production

D:\SUBLIME\REACT\node_modules\webpack-cli\bin\config-yargs.js:136
                                describe: optionsSchema.definitions.output.properties.path.description
                                                                           ^

TypeError: Cannot read property 'properties' of undefined
    at module.exports (D:\SUBLIME\REACT\node_modules\webpack-cli\bin\config-yargs.js:13
    at D:\SUBLIME\REACT\node_modules\webpack-cli\bin\webpack.js:59:27
    at Object.<anonymous> (D:\SUBLIME\REACT\node_modules\webpack-cli\bin\webpack.js:514
    at Module._compile (internal/modules/cjs/loader.js:689:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:700:10)
    at Module.load (internal/modules/cjs/loader.js:599:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:538:12)
    at Function.Module._load (internal/modules/cjs/loader.js:530:3)
    at Module.require (internal/modules/cjs/loader.js:637:17)
    at require (internal/modules/cjs/helpers.js:22:18)
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! uploadpublish@1.0.0 build: `webpack --mode production`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the uploadpublish@1.0.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:
npm ERR!     C:\Users\VERYNICE\AppData\Roaming\npm-cache\_logs\2020-06-10T14_43_53_493Z-debug.log
Run Code Online (Sandbox Code Playgroud)

Hel*_*ews 11

不幸的是, npm中不存在撤消功能,因此保留文件的先前状态package.json,如果存在,则通过package-lock.json和(这些文件是可选的)通过(或短: )npm-shrinkwrap.json恢复它是可行的方法。npm installnpm i

通常,在像您这样的情况下,您只需将所有更改恢复到package.jsongitpackage-lock.json版本控制系统即可。当然,如果您已将这些文件的先前版本保存在某处,您也可以手动执行此操作。当前文件不受 影响,因此不得恢复。npm-shrinkwrap.jsonnpm update

之后,您可以使用 来安装项目依赖项的旧版本npm i。请记住,package-lock.json 优先于 package.json,并且该package.json文件使用语义版本控制(semver)。并且该npm-shrinkwrap.json文件优先于这两个文件。甚至还有一些更细微的差异,但我认为这对于这个答案来说太过分了。

有关更多详细信息,您可以参考这些文档:

所以我希望你在某个地方有一个备份或以前的 git 提交。否则,您可以尝试通过尝试读取错误消息并使用引发此错误的旧版本的包来解决错误(webpack在您的情况下)。此外,该包的依赖关系也可能是问题的原因。但如果你决定走这条路,请慢慢来。祝你好运!:)


小智 11

我有一个稍微不同的问题。我npm audit fix --force在开发应用程序时运行,当我尝试运行时,我的项目无法编译npm start。我看到了之前的答案,并在这篇有关npm audit过度反应的文章中找到了更多信息。

我跑去git status确保对 package.json 和 package-lock.json 的更改尚未准备提交。然后,我跑了git restore package-lock.json,然后git restore package.json。然后,我npm install再次运行,应用程序能够编译。


小智 6

我从之前的提交中手动复制了 package.json 和 package.lock.json,然后执行了“npm install”并重建了我的 React 本机应用程序。效果非常好!