ng-packagr:构建错误 EPERM:不允许操作

ng-packagr: BUILD ERROR EPERM: operation not permitted

我按照 Nikolas LeBlanc 的 this 教程构建了一个 Angular 4 组件库。本教程描述了一种通过打包一个项目并将其安装到另一个项目中来在另一个项目中重用模块的方法。

首先,这是我的软件版本:

我无法按照标题 "Create our package" 进一步学习本教程,因为执行以下命令:

ng-packagr -p ng-package.json

执行该命令时会出现以下错误:

npm run forestrun

bte@0.0.0 forestrun C:\Users\Kevin.DeGoede\Documents\yoyo\bte
ng-packagr -p ng-package.json

Building Angular Package
Building entry point 'bte'
Cleaning build directory
Rendering Stylesheets
Rendering Templates
Compiling TypeScript sources through ngc
Bundling to FESM15
Bundling to FESM5
Bundling to UMD
Minifying UMD bundle
Relocating source maps
Copying staged files
Writing package metadata
Distributing npm packages with 'dependencies' is not recommended. Please consider adding to 'peerDependencies' or remove it from 'dependencies'.

BUILD ERROR
EPERM: operation not permitted, unlink 'C:\Users\Kevin\Documents\yoyo\bte\dist\src\app\modules'
Error: EPERM: operation not permitted, unlink 'C:\Users\Kevin\Documents\yoyo\bte\dist\src\app\modules'

npm ERR! code ELIFECYCLE
npm ERR! errno 111
npm ERR! bte@0.0.0 forestrun: ng-packagr -p ng-package.json
npm ERR! Exit status 111
npm ERR!
npm ERR! Failed at the bte@0.0.0 forestrun 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\Kevin\AppData\Roaming\npm-cache_logs18-05-04T08_30_30_818Z-debug.log

再次尝试时出现以下错误:

npm run forestrun

bte@0.0.0 forestrun C:\Users\Kevin\Documents\yoyo\bte
ng-packagr -p ng-package.json

Building Angular Package
glob error { Error: EPERM: operation not permitted, scandir 'C:\Users\Kevin\Documents\yoyo\bte\dist\src\app\modules'
errno: -4048,
code: 'EPERM',
syscall: 'scandir',
path: 'C:\Users\Kevin\Documents\yoyo\bte\dist\src\app\modules' }

BUILD ERROR
EPERM: operation not permitted, scandir 'C:\Users\Kevin\Documents\yoyo\bte\dist\src\app\modules'
Error: EPERM: operation not permitted, scandir 'C:\Users\Kevin\Documents\yoyo\bte\dist\src\app\modules'

npm ERR! code ELIFECYCLE
npm ERR! errno 111
npm ERR! bte@0.0.0 forestrun: ng-packagr -p ng-package.json
npm ERR! Exit status 111
npm ERR!
npm ERR! Failed at the bte@0.0.0 forestrun 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\Kevin\AppData\Roaming\npm-cache_logs18-05-04T08_54_07_739Z-debug.log

我也在 Mac 上尝试过,但一切正常,但我们都在 windows 机器上工作。那么如何让 ng-packagr 在我的 windows 机器上工作?

您可以代表管理员尝试运行命令行。也许会有帮助

如果有东西锁定 files/directories,通常会发生这种情况。对我来说,通常 VS Code 会这样做。

防止此错误的一种方法是 [1] 运行 在管理员模式下(如其他答案中所建议),或 [2] 关闭 VS Code 并尝试

或[3]从tsconfig.json中排除目录,如

    "exclude": [
        "dist"
    ]

自行安装出现错误的模块。

在花了很多时间并尝试了所有可能的建议后,我发现安装错误中提到的特定模块可以全局解决问题:

例如:npm ERR! { 错误:EPERM:不允许操作,取消链接 'C:\Path\Docume nts\AngularProjects\my-sample-app333\node_modules.staging@angular\core-a3d1aa4 8\ bundles\ core.umd.js

I 运行: npm install -global @angular/core

它帮我修好了!终于!!

就我而言,删除 "Angular Language Service" 插件对我很有帮助。

我找到了这个解决方案 here

我意识到我的应用程序处于断点...只需从 运行 停止应用程序即可。

清空你工作区的 dist 文件夹。它对我有用。