2016-02-06 110 views
1

是否可以将一组NPM安装文件和相关文件从Mac计算机复制到Windows计算机,并使所有这些文件都能正常工作?NPM是否依赖于计算机的操作系统?

例如,将Node.js文件与其他一些NPM文件从Mac传输到Windows,然后在该目录中(在Windows命令提示符下)运行node app.js

谢谢! :)

+3

你是什么意思“转移Node.js文件与其他一些NPM文件”?你的意思是件或实际npm和node.js安装或从你的依赖项的东西?无论哪种方式,您都可能遇到问题,特别是如果您的其中一个模块使用某种类型的节点gyp模块,可能会使其与平台和架构相关。这就是封装管理器的重点,来封装这些问题并为你处理。你想做什么? – zero298

+0

@ 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));' –

+0

是npm二进制文件本身是相关的,它所做的下载也是相关的。你不能从一台PC复制一个npm实例到一个MAC,它不会工作,或者提交node_modules并在另一个系统中使用,它也不会工作 –

回答

1

包含本机插件/依赖关系的NPM软件包与OS + NodeJS版本绑定,必须针对您打算使用它们的系统重新构建。这就是为什么你看到错误提到bson.node,它是一个必须重建的本机插件,这可以通过npm rebuild command完成。

+0

我试过'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 \\ .. \”。 (节点重建 ) 终止批处理作业(是/否)?(节点重建)' –

+0

确保你已经设置好你的Windows机器来构建本机插件:https://github.com/Microsoft/nodejs-guidelines/blob/master/windows-environment.md#environment-setup-and-configuration –

1

安装的二进制文件npm与平台相关,与node.js相同。这就是为什么下载站点上的每个平台都有不同的版本。

大多数情况下,您的项目文件是独立于平台的。例如,大多数JavaScript文件都将被node.js使用,并且工作得很好,而不必担心自己在哪个平台上,因为系统细节将由node.js本身处理。

但是,一些模块平台相关。例如,任何使用node-gyp的东西都会尝试在您的平台上通过npm安装模块进行编译。你不必担心,因为它是由npm处理的,这就是你使用包管理器的原因。

复制node_modules可以完成;但是在任何要运行应用程序的机器上运行npm i往往并非更好也更容易。您可以避免使用类似npm shrinkwrap之类的问题来担心版本问题,这些问题会锁定模块依赖的软件包版本。

相关问题