Node.js可以传递node_modules依赖关系吗?

时间:2017-09-25 22:49:47

标签: javascript node.js amazon-ec2

所以我在亚马逊的Web服务上的免费层上运行了一个ec2实例。我正在运行已配置为在其公共地址运行的Ubuntu服务器。这是server.js代码

const express = require('express')
const app = express()

/*
app.get('/', (req, res) => {
    res.send("CONTENT COMING")
})
*/

app.use(express.static('public'))
app.listen(3000, () => {console.log("Server Running on port 3000")})

正如您所看到的,我使用express来为静态文件服务器提供服务,这样我就可以在本地进行开发,并在需要的时候轻松地在线部署到服务器。在 public 文件夹中,我有一个 index.html 和一个 test.js < / em> 要投放的文件。我的问题是,我是否必须创建另一个节点包管理器实例来安装要在我的程序中使用的包?

例如,如果我想使用

来要求node.js文件系统
const fs = require('fs')

我是否必须创建另一个npm init然后安装我的依赖项,或者我可以以某种方式使用上面目录中的依赖项?

3 个答案:

答案 0 :(得分:2)

答案是否定的。你只需要一个。

NPM模块可以在您的代码中包含几个文件夹。

以项目文件夹为例:

/root
   app.js
   package.json
   /public
      index.html
   /node_modules
      ...

node-module文件夹中的所有模块都可以在任何项目子文件夹中使用。

比如说,你在一个文件夹中有一个名为anotherApp.js的文件,它将“继承”任何父文件夹中安装的所有节点模块。因此,它还可以访问项目根node_module文件夹中的每个模块。

/root
   /somefoldername
      /anotherfolder
         /application
            anotherApp.js
   /node_modules
      ...

我应该补充说,NPM(节点包管理器)可以处理本地安装的模块。 fs(文件系统)模块随节点一起提供并作为全局安装,因此您无需通过NPM进行安装。查看https://www.npmjs.com/以获取可下载模块的完整列表。

答案 1 :(得分:1)

我总是建议使用git来同步本地文件和EC2服务器上的文件。

要在本地和云上安装相同的依赖关系,您可以将其保存在package.json中 例如npm install --save express

在您的服务器上,npm install将安装package.json

中列出的所有依赖项

答案 2 :(得分:1)

您只需要在package.json中的当前项目中插入依赖项,并确保创建安装它的部署流程。

如果您无法部署到EC2实例,我建议您使用Amazon EB启动一个实例并使用CodeShip进行部署。

另一种选择是使用Heroku运行它并与git集成。

两者都会在运行之前安装依赖项。