我有一个项目,我将不得不部署到客户端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 回答
您可以在没有Internet连接的系统上安装软件包,方法是使用npm中的内置功能打包它们 . 这样,节点模块将正确安装 .
创建 package.json .
在 package.json 中,列出
bundledDependencies
(docs on npm)下所需的所有模块 .运行
npm install
以在打包前安装节点文件 .使用
npm pack
创建tarball .将tarball复制到没有Internet连接的计算机 .
使用
npm install <filename>
安装模块 .Update
关于您的评论,看起来您找不到全局安装的节点模块 .
尝试使用
npm link
命令(docs on npm link):cd yourAppFolder
npm link node-windows
1 - 在带有Internet访问权限的系统中使用此命令安装模块:
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