【问题标题】:Can't install Node.js Packages properly on Shared hosting无法在共享主机上正确安装 Node.js 包
【发布时间】:2021-01-24 12:27:40
【问题描述】:

我正在尝试将一些软件包安装到我在 namecheap 服务器上的共享主机帐户中, 我是节点 Js 的完整初学者,所以如果这是一个愚蠢的问题,请与我裸露, 我最初尝试通过CPanel中的命令行界面安装两个包express & https,这两个似乎已经安装,但是它给出了关于package.json文件的警告。

输出如下

[letlziml@premium88 ~]$ npm install express
bash: npm: command not found
[letlziml@premium88 ~]$ cls
bash: cls: command not found
[letlziml@premium88 ~]$ source /home/letlziml/nodevenv/rootz/12/bin/activate
[rootz (12)] [letlziml@premium88 ~]$ cls
bash: cls: command not found
[rootz (12)] [letlziml@premium88 ~]$ cd /home/letlziml/rootz
[rootz (12)] [letlziml@premium88 rootz]$ npm install
ln: creating symbolic link `/home/letlziml/nodevenv/rootz/12/lib/package.json': No such file or directory
npm WARN saveError ENOENT: no such file or directory, open '/home/letlziml/nodevenv/rootz/12/lib/package.json'
npm WARN enoent ENOENT: no such file or directory, open '/home/letlziml/nodevenv/rootz/12/lib/package.json'
npm WARN lib No description
npm WARN lib No repository field.
npm WARN lib No README data
npm WARN lib No license field.

audited 88 packages in 1.015s
found 0 vulnerabilities

[rootz (12)] [letlziml@premium88 rootz]$ npm install express
ln: creating symbolic link `/home/letlziml/nodevenv/rootz/12/lib/package.json': No such file or directory
npm WARN saveError ENOENT: no such file or directory, open '/home/letlziml/nodevenv/rootz/12/lib/package.json'
npm WARN enoent ENOENT: no such file or directory, open '/home/letlziml/nodevenv/rootz/12/lib/package.json'
npm WARN lib No description
npm WARN lib No repository field.
npm WARN lib No README data
npm WARN lib No license field.

+ express@4.17.1
updated 1 package and audited 88 packages in 1.009s
found 0 vulnerabilities

[rootz (12)] [letlziml@premium88 rootz]$ npm install https
ln: creating symbolic link `/home/letlziml/nodevenv/rootz/12/lib/package.json': No such file or directory
npm WARN saveError ENOENT: no such file or directory, open '/home/letlziml/nodevenv/rootz/12/lib/package.json'
npm WARN enoent ENOENT: no such file or directory, open '/home/letlziml/nodevenv/rootz/12/lib/package.json'
npm WARN lib No description
npm WARN lib No repository field.
npm WARN lib No README data
npm WARN lib No license field.

+ https@1.0.0
added 1 package from 1 contributor and audited 89 packages in 0.977s
found 0 vulnerabilities

[rootz (12)] [letlziml@premium88 rootz]$ npm install https
ln: creating symbolic link `/home/letlziml/nodevenv/rootz/12/lib/package.json': No such file or directory
npm ERR! code EJSONPARSE
npm ERR! file /home/letlziml/nodevenv/rootz/12/lib/package.json
npm ERR! JSON.parse Failed to parse json
npm ERR! JSON.parse Unexpected end of JSON input while parsing near ''
npm ERR! JSON.parse Failed to parse package.json data.
npm ERR! JSON.parse package.json must be actual JSON, not just JavaScript.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/letlziml/.npm/_logs/2020-10-09T11_07_13_947Z-debug.log
[rootz (12)] [letlziml@premium88 rootz]$ npm install wss
ln: creating symbolic link `/home/letlziml/nodevenv/rootz/12/lib/package.json': No such file or directory
npm ERR! code EJSONPARSE
npm ERR! file /home/letlziml/nodevenv/rootz/12/lib/package.json
npm ERR! JSON.parse Failed to parse json
npm ERR! JSON.parse Unexpected end of JSON input while parsing near ''
npm ERR! JSON.parse Failed to parse package.json data.
npm ERR! JSON.parse package.json must be actual JSON, not just JavaScript.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/letlziml/.npm/_logs/2020-10-09T11_09_42_615Z-debug.log
[rootz (12)] [letlziml@premium88 rootz]$ npm install 'wss'
ln: creating symbolic link `/home/letlziml/nodevenv/rootz/12/lib/package.json': No such file or directory
npm ERR! code EJSONPARSE
npm ERR! file /home/letlziml/nodevenv/rootz/12/lib/package.json
npm ERR! JSON.parse Failed to parse json
npm ERR! JSON.parse Unexpected end of JSON input while parsing near ''
npm ERR! JSON.parse Failed to parse package.json data.
npm ERR! JSON.parse package.json must be actual JSON, not just JavaScript.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/letlziml/.npm/_logs/2020-10-09T11_10_04_988Z-debug.log
[rootz (12)] [letlziml@premium88 rootz]$ npm install fs
ln: creating symbolic link `/home/letlziml/nodevenv/rootz/12/lib/package.json': No such file or directory
npm ERR! code EJSONPARSE
npm ERR! file /home/letlziml/nodevenv/rootz/12/lib/package.json
npm ERR! JSON.parse Failed to parse json
npm ERR! JSON.parse Unexpected end of JSON input while parsing near ''
npm ERR! JSON.parse Failed to parse package.json data.
npm ERR! JSON.parse package.json must be actual JSON, not just JavaScript.

npm ERR! A complete log of this run can be found in:
npm ERR!     /home/letlziml/.npm/_logs/2020-10-09T11_12_22_034Z-debug.log
[rootz (12)] [letlziml@premium88 rootz]$ source /home/letlziml/nodevenv/rootz/12/bin/activate && cd /home/letlziml/rootz
[rootz (12)] [letlziml@premium88 rootz]$ netsh /?
bash: netsh: command not found
[rootz (12)] [letlziml@premium88 rootz]$ /?
bash: /?: No such file or directory
[rootz (12)] [letlziml@premium88 rootz]$

它说它找不到文件 package.json 或无法读取/解析这个文件。所以我创建了一个空白文件,看看它是否也会写入数据或用必要的信息填充它,现在当我在任何模块上运行 npm 时,它不再发出警告而只是抛出错误......有人知道如何修复这个?

很确定 https 和 express 都正确安装了,就像我查看模块文件夹时一样,它们现在在其中,而以前不存在。但是,当我尝试创建 https 服务器时,网页仍然抛出错误。

在youtube上看过不少node教程,但这部分还是让我很困惑。
附言。 1) ENOENT 是什么意思? 2) 如何使用所有正确信息自动填充 package.json 文件?

【问题讨论】:

    标签: node.js json npm node-modules npm-install


    【解决方案1】:

    我刚刚成功地将我的第二个 node.js 应用程序部署到远程服务器(爱尔兰 Web 服务器)。对我来说,在主页的 cPanel 中有一个“安装 Node.js”图标。按照文档我打开它。使用 ftp 将所有文件传输到服务器后,node_modules 文件夹除外,我单击该图标并按照 cPanel 文档中的说明创建了一个 node.js 应用程序。然后我点击了Run npm install 的按钮。这与$ npm install locally 的作用相同。它查看 package.json 文件并安装依赖项中列出的任何包,但它将它们安装在一个文件夹中,该文件夹是服务器根目录(不是您的网站)的一个分支,至少对我来说似乎无法访问。即使使用我的终端使用 ssh $ ssh username@serverIPaddress 访问服务器,尽管它允许我 $ npm install express 我怀疑这是否会对我的项目产生任何影响。您在Failed to parse json 上面遇到的错误之一是我在编辑后在 json 文件中遗漏了一个逗号时得到的。当您在本地运行 $ npm init 时,它会创建一个完美的 package.json 文件。如果您将其上传到您的网站根目录,它可能会修复该错误。祝你好运!

    【讨论】:

      【解决方案2】:

      要在本地安装包,您需要在项目中。项目文件夹只需要一个 package.json

      运行npm init 将引导您完成节点项目的创建。检查https://docs.npmjs.com/cli/init 以获得进一步说明。将包安装到项目时,npm install --save <package name> 将更新包 json 并包含对它的依赖。

      此外,还有可以通过npm install -g <package name> 安装的全局包。这些将在全球范围内提供。这些通常是在 nodejs 上运行的 CLI 工具。

      我建议运行 npm init 并尝试一个简单的 hello world 项目来开始。

      ENOENT:Why does ENOENT mean "No such file or directory"?

      【讨论】:

      • 嘿,谢谢你的回答,我通过 cd 命令进入项目,我已经有一个“hello world”,并且有一个简单的服务器正在运行,只是试图从 http 更改为 https 和遇到这些错误,我将查看您添加的文档。谢谢。
      • 可能您的 npm 正在查看错误的目录。尝试通过运行以下命令在完整路径中指定您的项目目录:npm install --save --prefix /home/.../projectpath express
      猜你喜欢
      • 2020-01-01
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      • 1970-01-01
      • 2019-03-29
      • 2011-01-21
      • 2018-08-05
      • 2013-07-05
      相关资源
      最近更新 更多