如何在没有Internet连接的情况下在本地安装NodeJS项目?

时间:2014-04-23 17:00:15

标签: windows node.js npm

我有一个项目,我将不得不部署到客户端Windows系统,在那里无法连接到互联网。我目前在D:\ NODE中有一个文件夹,其中包含node.exe和npm.cmd以及node_modules文件夹。为了能够从命令行运行节点,我已将D:\ NODE添加到PATH变量。

我可以在项目的node_modules中本地安装大多数模块。然而,有一个 - 节点 - 窗口 - 需要全局安装才能工作。

根据下面的建议,我进入了node-windows(全局安装)并将其打包(npm pack),这创建了一个tarball。然后我用我的项目复制了该文件,并尝试将其安装在测试机器上,如下所示:npm install -g node-windows-0.1.5.tgz

我可以看到它已安装在全局目录中。但是,当我尝试运行使用此模块的命令时,它会抱怨它无法找到它:Error: Cannot find module 'node-windows'

当我列出模块(npm list -g)时,它显然位于列表中......

你怎么看?谢谢你。

2 个答案:

答案 0 :(得分:21)

您可以在没有互联网连接的系统上安装软件包,方法是使用 npm 中的内置功能打包它们。这样,节点模块将正确安装。

  1. 创建 package.json
  2. package.json 中,列出bundledDependenciesdocs on npm)下所需的所有模块。
  3. 运行npm install以在打包前安装节点文件。
  4. 使用npm pack创建tarball。
  5. 将tarball复制到没有互联网连接的计算机上。
  6. 使用npm install <filename>安装模块。
  7. <强>更新

    关于您的评论,看起来您找不到全局安装的节点模块

    尝试使用npm link命令(docs on npm link):

    1. cd yourAppFolder
    2. npm link node-windows

答案 1 :(得分:1)

1 - 在带有Internet访问安装模块的系统中使用此命令:

npm install [module name]

2 - 转到%userprofile%\ AppData \ Roaming \ npm \ node_modules [模块名称] \ (例如C:\ Users \ janson \ AppData \ Roaming \ npm \ node_modules \ grunt-cli)
3 - 运行npm pack
4 - 这应该导致[模块名称] -x.y.z.tgz文件
5 - 在离线系统中运行npm i -g [module name]-x.y.z.tgz