Max*_*ini 14 node.js npm angular
我的设置:
只是尝试运行默认的角度模板:
> npm install -g @angular/cli # this installed the angular version mentioned above
> ng new test # Chose default options for the project
> cd test
> npm ci # lots of error messages
Run Code Online (Sandbox Code Playgroud)
最后一个命令会导致输出中出现很多错误(但不会使命令失败):
> fsevents@1.2.11 install C:\test\node_modules\@angular\compiler-cli\node_modules\fsevents
> node-gyp rebuild
C:\test\node_modules\@angular\compiler-cli\node_modules\fsevents>if not defined npm_config_node_gyp (node "C:\Users\foo\AppData\Roaming\nvm\v12.14.1\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin\\..\..\node_modules\node-gyp\bin\node-gyp.js" rebuild ) else (node "C:\Users\foo\AppData\Roaming\nvm\v12.14.1\node_modules\npm\node_modules\node-gyp\bin\node-gyp.js" rebuild )
gyp ERR! find Python
gyp ERR! find Python Python is not set from command line or npm configuration
gyp ERR! find Python Python is not set from environment variable PYTHON
gyp ERR! find Python checking if "python" can be used
gyp ERR! find Python - "python" is not in PATH or produced an error
gyp ERR! find Python checking if "python2" can be used
gyp ERR! find Python - "python2" is not in PATH or produced an error
gyp ERR! find Python checking if "python3" can be used
gyp ERR! find Python - "python3" is not in PATH or produced an error
gyp ERR! find Python checking if the py launcher can be used to find Python 2
gyp ERR! find Python - "py.exe" is not in PATH or produced an error
gyp ERR! find Python checking if Python is C:\Python27\python.exe
gyp ERR! find Python - "C:\Python27\python.exe" could not be run
gyp ERR! find Python checking if Python is C:\Python37\python.exe
gyp ERR! find Python - "C:\Python37\python.exe" could not be run
gyp ERR! find Python
gyp ERR! find Python **********************************************************
gyp ERR! find Python You need to install the latest version of Python.
gyp ERR! find Python Node-gyp should be able to find and use Python. If not,
gyp ERR! find Python you can try one of the following options:
gyp ERR! find Python - Use the switch --python="C:\Path\To\python.exe"
gyp ERR! find Python (accepted by both node-gyp and npm)
gyp ERR! find Python - Set the environment variable PYTHON
gyp ERR! find Python - Set the npm configuration variable python:
gyp ERR! find Python npm config set python "C:\Path\To\python.exe"
gyp ERR! find Python For more information consult the documentation at:
gyp ERR! find Python https://github.com/nodejs/node-gyp#installation
gyp ERR! find Python **********************************************************
gyp ERR! find Python
gyp ERR! configure error
gyp ERR! stack Error: Could not find any Python installation to use
gyp ERR! stack at PythonFinder.fail (C:\Users\foo\AppData\Roaming\nvm\v12.14.1\node_modules\npm\node_modules\node-gyp\lib\find-python.js:307:47)
gyp ERR! stack at PythonFinder.runChecks (C:\Users\foo\AppData\Roaming\nvm\v12.14.1\node_modules\npm\node_modules\node-gyp\lib\find-python.js:136:21)
gyp ERR! stack at PythonFinder.<anonymous> (C:\Users\foo\AppData\Roaming\nvm\v12.14.1\node_modules\npm\node_modules\node-gyp\lib\find-python.js:225:16)
gyp ERR! stack at PythonFinder.execFileCallback (C:\Users\foo\AppData\Roaming\nvm\v12.14.1\node_modules\npm\node_modules\node-gyp\lib\find-python.js:271:16)
gyp ERR! stack at exithandler (child_process.js:302:5)
gyp ERR! stack at ChildProcess.errorhandler (child_process.js:314:5)
gyp ERR! stack at ChildProcess.emit (events.js:223:5)
gyp ERR! stack at Process.ChildProcess._handle.onexit (internal/child_process.js:270:12)
gyp ERR! stack at onErrorNT (internal/child_process.js:456:16)
gyp ERR! stack at processTicksAndRejections (internal/process/task_queues.js:81:21)
gyp ERR! System Windows_NT 10.0.18362
gyp ERR! command "C:\\Program Files\\nodejs\\node.exe" "C:\\Users\\foo\\AppData\\Roaming\\nvm\\v12.14.1\\node_modules\\npm\\node_modules\\node-gyp\\bin\\node-gyp.js" "rebuild"
gyp ERR! cwd C:\Users\foo\repos\POC\angular\test1\node_modules\@angular\compiler-cli\node_modules\fsevents
gyp ERR! node -v v12.14.1
gyp ERR! node-gyp -v v5.0.5
gyp ERR!
Run Code Online (Sandbox Code Playgroud)
fsevents
所有错误都与node-gyp
未找到 python 可执行文件有关。没错,我没有安装Python,但这不是Angular的先决条件。
该命令实际上以 0 代码退出(表示成功 - 此外,ng build --prod
此后可以工作!),但输出中肯定有很多错误。
node_modules
手动删除文件夹并运行npm install
会npm ci
产生更短且没有任何错误的输出。此外,它不会修改该package-lock.json
文件,这表明安装了相同版本的依赖项。
到底是怎么回事?为什么使用时出现这么多错误,npm ci
而使用时却没有错误npm install
?
Max*_*ini 29
Angular 间接依赖于fsevents
1.2.11,它不应该在 Windows 上编译(它是 darwin-OS 相关模块)。npm ci
被窃听并忽略os
模块中的字段package.json
,因此它无论如何都会尝试编译该模块,但在 Windows 上失败。
该错误在以前的 Angular 版本中没有出现,因为fsevents
1.2.9 是直接从 AWS 下载二进制文件而不是编译它们。但由于开发人员无法访问 AWS 存储桶,导致无法在节点 13 上安装该模块,因此他们发布了 1.2.11 补丁以允许节点 13 用户安装该软件包。
npm ci
在 Angular得到修复和/或fsevents
更新到 2.x之前,Windows 上的解决方法是:
npm ci
退出时代码为 0,因为依赖项是可选的,因此它不应阻止您的部署脚本(只是稍微减慢速度并使其更详细)。我认为最不糟糕的选择...npm install
而不是npm ci
,这将正确处理依赖文件os
的字段fsevents
。但这可能会更新您的依赖项,因此它并不真正适合 CI 脚本,因为它可以更改版本化文件,并且不会产生可重复的输出。fsevents
为 1.2.9 而不是 1.2.11,以便npm ci
下载二进制文件而不是编译它们。使用节点 13 时这不起作用,因为没有可下载此版本节点的二进制文件。另外,我找不到应该如何更新package.json
文件来做到这一点(这对我不起作用)。npm ci --no-optional
。不幸的是,这不起作用,因为npm ci
. 归档时间: |
|
查看次数: |
3005 次 |
最近记录: |