【问题标题】:Installing and using npm (Node.js) module on Windows 2008 server在 Windows 2008 服务器上安装和使用 npm (Node.js) 模块
【发布时间】:2019-03-17 20:31:47
【问题描述】:

有人可以建议 - 如何解决这个问题?此设置在 Windows 7 笔记本电脑上本地运行良好,但在 Windows 2008 服务器上失败。

设置如下: 1. 在 Windows Server 2008 上使用 ASP.NET Core App 和 NodeServices。 2.在服务器上安装Node.js和NPM。

以管理员帐户“xyz”之一登录。当我安装一个 npm 模块时——在本例中是 cypress 测试框架,它安装在以下路径下:

C:\Users\xyz\AppData\Local

但是当我运行应用程序时,它会在路径下寻找模块:

C:\Windows\system32\config\systemprofile\AppData\Local\Cypress\Cache\3.1.5\Cypress\

应用程序失败,抱怨找不到模块。

到目前为止我尝试过的事情: 1. 将 cypress 模块直接从用户 localappdata 文件夹复制到上述位置。然后它工作。 2. 尝试给出 var cypress = require('cypress') 的完整路径 - 它找到了模块,但每当我们尝试使用 cypress 时,都会出现相同的错误。
3. 尝试将 nom 前缀和缓存位置更改为上述路径,但 npm install cypress 始终仅安装在用户的 localappdata 路径下。

关于如何的任何想法 - 要么进行 npm 安装,要么将模块安装在所需的位置。或者让应用程序查看所需的路径?

非常感谢。

这是错误:

An unhandled exception occurred while processing the request.
NodeInvocationException: No version of Cypress is installed in: C:\Windows\system32\config\systemprofile\AppData\Local\Cypress\Cache\3.1.5\Cypress

Please reinstall Cypress by running: cypress install
----------

Cypress executable not found at: C:\Windows\system32\config\systemprofile\AppData\Local\Cypress\Cache\3.1.5\Cypress\Cypress.exe
----------

Platform: win32 (6.1.7601)
Cypress Version: 3.1.5
Error: No version of Cypress is installed in: C:\Windows\system32\config\systemprofile\AppData\Local\Cypress\Cache\3.1.5\Cypress

Please reinstall Cypress by running: cypress install
----------

Cypress executable not found at: C:\Windows\system32\config\systemprofile\AppData\Local\Cypress\Cache\3.1.5\Cypress\Cypress.exe
----------

Platform: win32 (6.1.7601)
Cypress Version: 3.1.5
at raise (C:\inetpub\wwwroot\projectTest\node_modules\cypress\lib\errors.js:161:13)
From previous event:
at C:\inetpub\wwwroot\EmbeddedDashboard\node_modules\cypress\lib\errors.js:169:37
at C:\inetpub\wwwroot\projectTest\node_modules\cypress\lib\tasks\verify.js:48:60
From previous event:
at checkExecutable (C:\inetpub\wwwroot\projectTest\node_modules\cypress\lib\tasks\verify.js:43:11)
at C:\inetpub\wwwroot\projectTest\node_modules\cypress\lib\tasks\verify.js:213:12
at processImmediate [as _immediateCallback] (timers.js:383:17)
From previous event:
at Object.start (C:\inetpub\wwwroot\projectTest\node_modules\cypress\lib\tasks\verify.js:212:6)
at Object.start (C:\inetpub\wwwroot\projectTest\node_modules\cypress\lib\exec\run.js:130:19)
at C:\inetpub\wwwroot\projectTest\node_modules\cypress\lib\cypress.js:29:19
at _fileCreated (C:\inetpub\wwwroot\projectTest\node_modules\tmp\lib\tmp.js:246:7)
at FSReqWrap.oncomplete (fs.js:82:15)
From previous event:
at Object.run (C:\inetpub\wwwroot\projectTest\node_modules\cypress\lib\cypress.js:26:28)
at module.exports.cypress.run.then (C:\inetpub\wwwroot\projectTest\Scripts\RunTests.js:4:13)
at C:\Windows\TEMP\mecqsmig.e5o:166:18
at IncomingMessage.<anonymous> (C:\Windows\TEMP\mecqsmig.e5o:186:37)
at emitNone (events.js:67:13)
at IncomingMessage.emit (events.js:166:7)
at endReadableNT (_stream_readable.js:905:12)
at nextTickCallbackWith2Args (node.js:474:9)
at process._tickCallback (node.js:388:17)
Microsoft.AspNetCore.NodeServices.HostingModels.HttpNodeInstance.InvokeExportAsync<T>(NodeInvocationInfo invocationInfo, CancellationToken cancellationToken)

【问题讨论】:

  • 你能把错误信息贴出来吗?
  • 刚刚添加了错误堆栈跟踪。

标签: node.js asp.net-core npm windows-server-2008-r2 cypress


【解决方案1】:

赛普拉斯使用cachedir 来找到安装赛普拉斯的正确位置。 C:\Windows\System32\config\systemprofile 是 Windows 上 SYSTEM 用户的主文件夹。不知何故,npm install 正在以 SYSTEM 身份执行,而不是以您的用户身份执行。这将导致 Cypress 将尝试安装到 SYSTEM 的 %APPDATA% 目录,即 C:\Windows\System32\config\systemprofile

【讨论】:

  • 嗨 Zach,问题是这样的:当我执行 npm install 时,它实际上是安装在登录用户的 %APPDATA% 本身中,而不是安装在 SYSTEM 的主文件夹中。但是,在运行应用程序时,它是查看 SYSTEM 的主文件夹。那就是问题所在。它安装在用户的 appdata 位置,但在运行时查看 SYSTEM 的 appdata 位置。
  • 您是否以 SYSTEM 而不是您自己的用户身份运行它?
  • 我作为我创建的系统帐户运行,但它仍然指向 System32/config/ 位置令人惊讶。我希望它会查看该用户的本地应用程序数据,但由于某种原因并非如此。
【解决方案2】:

这是有道理的,根据system requirements of Cypress

Windows 7+,仅为 Windows 提供 32 位二进制文​​件。

【讨论】:

    【解决方案3】:

    我想出了如何解决这个问题。出于某种原因,当我运行应用程序时,即使它被配置为在服务帐户下运行,它仍然使用默认系统位置作为缓存位置。

    您可以通过将环境变量设置为所需位置来配置赛普拉斯的缓存位置。这为我解决了这个问题。这是它的链接:https://docs.cypress.io/guides/getting-started/installing-cypress.html#Binary-cache

    基本上,您为此环境变量CYPRESS_CACHE_FOLDER 设置一个值,然后您就设置好了。

    希望这对某人有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-02-05
      • 2012-07-22
      • 2012-12-13
      • 2011-01-31
      • 2012-04-26
      • 2011-02-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多