我有一个项目,我将不得不部署到客户端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
)时,它显然位于列表中......
答案 0 :(得分:21)
您可以在没有互联网连接的系统上安装软件包,方法是使用 npm 中的内置功能打包它们。这样,节点模块将正确安装。
bundledDependencies
(docs on npm)下所需的所有模块。npm install
以在打包前安装节点文件。 npm pack
创建tarball。npm install <filename>
安装模块。<强>更新强>
关于您的评论,看起来您找不到全局安装的节点模块。
尝试使用npm link
命令(docs on npm link):
cd yourAppFolder
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