npm未安装;路径中存在非法字符

4

我从一个离开很久的同事那里接手了一个破损的NLog项目...

  • VS2015更新2
  • 最新的Node安装
  • 最新的npm更新3.10.3
  • '.net 5.0'项目(预核心1.0)

我的npm node总是显示'npm - not installed'

未安装npm

当我右键单击时,立即出现“路径中有非法字符”

输入图像说明

这是我的package.json文件

{
"version": "0.0.0",
"name": "asp.net",
"devDependencies": {
    "gulp": "^3.9.0",
    "gulp-bower": "^0.0.11",
    "gulp-concat": "^2.6.0",
    "gulp-install": "^0.6.0",
    "gulp-sass": "^2.1.1",
    "gulp-uglify": "^1.5.1",
    "gulp-util": "^3.0.7",
    "gulp-watch": "^4.3.5",
    "run-sequence": "^1.1.5",
    "browser-sync": "^2.10.0",
    "gulp-filter": "^3.0.1",
    "main-bower-files": "^2.9.0",
    "gulp-rename": "^1.2.2",
    "gulp-sourcemaps": "^1.6.0"
}

这是我的 project.json 文件:

{
"webroot": "wwwroot",
"version": "1.0.0-*",
"dependencies": {
    "EntityFramework.Commands": "7.0.0-rc1-final",
    "EntityFramework.MicrosoftSqlServer": "7.0.0-rc1-final",
    "Microsoft.AspNet.Authentication.Cookies": "1.0.0-rc1-final",
    "Microsoft.AspNet.Diagnostics": "1.0.0-rc1-final",
    "Microsoft.AspNet.Diagnostics.Entity": "7.0.0-rc1-final",
    "Microsoft.AspNet.Identity.EntityFramework": "3.0.0-rc1-final",
    "Microsoft.AspNet.IISPlatformHandler": "1.0.0-rc1-final",
    "Microsoft.AspNet.Mvc": "6.0.0-rc1-final",
    "Microsoft.AspNet.Mvc.TagHelpers": "6.0.0-rc1-final",
    "Microsoft.AspNet.Server.Kestrel": "1.0.0-rc1-final",
    "Microsoft.AspNet.Server.WebListener": "1.0.0-rc1-final",
    "Microsoft.AspNet.Session": "1.0.0-rc1-final",
    "Microsoft.AspNet.SignalR.Server": "3.0.0-rc1-final",
    "Microsoft.AspNet.StaticFiles": "1.0.0-rc1-final",
    "Microsoft.AspNet.Tooling.Razor": "1.0.0-rc1-final",
    "Microsoft.Extensions.Caching.Memory": "1.0.0-rc1-final",
    "Microsoft.Extensions.Configuration.Json": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Console": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.Debug": "1.0.0-rc1-final",
    "Microsoft.Extensions.Logging.NLog": "1.0.0-rc1-final",
    "Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0-rc1-final",
    "MvcWebApiCors": "0.3.0"
},
"commands": {
    "web": "Microsoft.AspNet.Server.Kestrel",
    "ef": "EntityFramework.Commands"
},
"frameworks": {
    "dnx451": {
  "dependencies": {
    "Rally.RestApi": "1.0.0-*"
  }
    }
},
"exclude": [
    "wwwroot",
    "node_modules",
    "bower_components"
],
"publishExclude": [
    "node_modules",
    "bower_components",
    "**.kproj",
    "**.user",
    "**.vspscc"
],
"scripts": {
    "postrestore": [ "npm install" ],
    "prepare": [ "gulp" ]
}

以下是我的Bower.json文件

{
"name": "WebApplication",
"private": true,
"dependencies": {
    "bootstrap": "^4.0.0-alpha.2",
    "signalr": "^2.2.0",
    "font-awesome": "^4.5.0",
    "moment": "^2.11.0",
    "Chart-js": "^1.0.2",
    "tether": "^1.1.1",
    "bootstrap-daterangepicker": "2.1.17",
    "handlebars": "^4.0.5",
    "chosen": "^1.4.2"
}

global.json

{
"projects": [
"src",
"wrap"
],
"sdk": {
"version": "1.0.0-rc1-update1"
}

整体问题是没有任何css样式显示。与我们的iis盒子上的网站相比,该网站看起来很简陋。

你的(项目的)路径名中有空格或短横线“-”吗? - Tseng
“项目路径名称”? - Beau D'Amore
如果我移除 "gulp-watch": "^4.3.5" 和 "browser-sync": "^2.10.0",那么错误就会消失,供您参考。 - Beau D'Amore
这并没有回答我的问题。你的项目所在的文件夹路径中有空格或破折号吗?例如,你的文件夹名称是像 "C:\Projects\some-stuff\MyProject" 还是 "C:\Projects with space\MyProject"?一些命令行工具可能会在处理这样的文件夹时出现问题。 - Tseng
刚刚更新到了asp.net core 1.0版本(昨晚发布),并且安装了VS Update 3,但是出现了相同的错误。 - Beau D'Amore
显示剩余2条评论
2个回答

4
在尝试全局安装npm包(使用-g标志)时,我遇到了相同的问题。 任何我尝试全局安装的npm包都会抛出以下相同的错误。
npm ERR! code EINVAL
npm ERR! path C:\Users\xxxxxxx'C:\Users\xxxxxxx\AppData\Roaming\npm
npm ERR! Illegal characters in path.

npm ERR! A complete log of this run can be found in:
npm ERR!     C:\Users\xxxxxxx\AppData\Local\npm-cache\_logs\2021-12-15T10_49_39_874Z-debug.log

我检查了PATH变量,一切正常。

在互联网上做了一些研究后,尝试了以下命令

npm bin -g

这显示了一个奇怪的路径。

C:\Users\xxxxxx'C:\Users\xxxxxx\AppData\Roaming\npm
(not in PATH env variable)

在阅读这篇文章之后,我尝试设置npm配置的路径前缀,并且它起作用了!

这是我如何设置的。

npm config set prefix C:\Users\xxxxxxx\AppData\Roaming\npm

您可以使用以下方法来检查并确认:
npm config get prefix

理想情况下,这条路径应该添加到我主目录下的“.npmrc”文件中(C:\ Users \ xxxxxxxx)。如果“.npmrc”文件中没有任何其他内容(例如访问您的私有npm注册表的访问令牌),则删除该文件将解决此问题。
只是发布在这里,以便面临类似问题的人可以找到相关帮助,因为问题标题与此问题有关。

2

找到答案了...

一些包(例如webpack)依赖于不支持Windows的软件包,这会导致NPM打印警告。VS将其解释为普遍问题,并说这些包未安装,尽管实际上应忽略此警告。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接