是否可以将一组NPM安装文件和相关文件从Mac计算机复制到Windows计算机,并使所有这些文件都能正常工作?NPM是否依赖于计算机的操作系统?
例如,将Node.js
文件与其他一些NPM文件从Mac传输到Windows,然后在该目录中(在Windows命令提示符下)运行node app.js
。
谢谢! :)
是否可以将一组NPM安装文件和相关文件从Mac计算机复制到Windows计算机,并使所有这些文件都能正常工作?NPM是否依赖于计算机的操作系统?
例如,将Node.js
文件与其他一些NPM文件从Mac传输到Windows,然后在该目录中(在Windows命令提示符下)运行node app.js
。
谢谢! :)
包含本机插件/依赖关系的NPM软件包与OS + NodeJS版本绑定,必须针对您打算使用它们的系统重新构建。这就是为什么你看到错误提到bson.node
,它是一个必须重建的本机插件,这可以通过npm rebuild
command完成。
我试过'npm rebuild',但是它回来了'> [email protected] install〜\ node_modules \ mongodb \ node_modules \ bson >(node-gyp rebuild 2> builderror.log)|| (出口0) 〜\ node_modules \ mongodb \ node_modules \ bson>如果没有定义n pm_config_node_gyp(节点“C:\ Program Files \ nodejs \ node_modules \ npm \ bin \ node-gyp- bin \\ .. \”。 (节点重建 ) 终止批处理作业(是/否)?(节点重建)' –
确保你已经设置好你的Windows机器来构建本机插件:https://github.com/Microsoft/nodejs-guidelines/blob/master/windows-environment.md#environment-setup-and-configuration –
安装的二进制文件npm与平台相关,与node.js相同。这就是为什么下载站点上的每个平台都有不同的版本。
大多数情况下,您的项目文件是独立于平台的。例如,大多数JavaScript文件都将被node.js使用,并且工作得很好,而不必担心自己在哪个平台上,因为系统细节将由node.js本身处理。
但是,一些模块是平台相关。例如,任何使用node-gyp的东西都会尝试在您的平台上通过npm安装模块进行编译。你不必担心,因为它是由npm处理的,这就是你使用包管理器的原因。
复制node_modules
可以完成;但是在任何要运行应用程序的机器上运行npm i
往往并非更好也更容易。您可以避免使用类似npm shrinkwrap
之类的问题来担心版本问题,这些问题会锁定模块依赖的软件包版本。
你是什么意思“转移Node.js文件与其他一些NPM文件”?你的意思是件或实际npm和node.js安装或从你的依赖项的东西?无论哪种方式,您都可能遇到问题,特别是如果您的其中一个模块使用某种类型的节点gyp模块,可能会使其与平台和架构相关。这就是封装管理器的重点,来封装这些问题并为你处理。你想做什么? – zero298
@ zero298 - 通过传递我的意思是发送一个项目文件的文件夹。我尝试删除'node-modules'文件夹,并使用'npm install'。我得到的错误是:'[错误:%1不是有效的Win32应用程序。 D:\〜\ node_modules \ mongodb \ node_modules \ bson \ build \ Releas e \ bson.node] js-bson:无法加载C++ bson扩展,使用纯JS版本 fs.js:844 return binding.stat(pathModule._makeLong(path));' –
是npm二进制文件本身是相关的,它所做的下载也是相关的。你不能从一台PC复制一个npm实例到一个MAC,它不会工作,或者提交node_modules并在另一个系统中使用,它也不会工作 –