自定义捆绑节点安装在其他PC上不起作用

13-10-2017 – 自我回答 ,见下文,问题解决

13-10-2017 – 更新已添加 ,请参阅问题的结尾,仍未解决

先说明,后面的问题:

我们的团队使用一个准备好的开发环境,并且我想用liferay主题生成器添加构buildLiferay dxp主题所需的节点组件。

我已经安装了Win64-Zip-Installation的节点,所以我把它解压缩到一个自定义目录(win10)。

我已经设置了环境variables并创build了.npmrc,前缀(npm-packages)和caching(npm-cache)也驻留在上面提到的自定义目录中。

我已经通过npm(gulp,yo,generator-liferay-theme,liferay-theme-tasks,liferay-theme-deps-7.0,全部用-g)安装了额外的必需组件。

所以我的全球安装看起来像这样

custom directory | +--- node-v6.11.4-win-x64 | +--- npm-cache | +--- npm-packages 

环境variables被设置

 NODE_PATH=(custom directory)\node-v6.11.4-win-x64;(custom directory)\npm-packages\node_modules NPM_PACKAGES=(custom directory)\npm-packages 

包括path

 Path=...;(custom directory)\node-v6.11.4-win-x64;(custom directory)\npm-packages 

而.npmrc就是这样

 prefix=(custom directory)\npm-packages cache=(custom directory)\npm-cache proxy=(our proxy) registry=http://registry.npmjs.org/ fetch-retry-mintimeout=1000 fetch-retry-maxtimeout=3000 strict-ssl=false 

在我的机器上构buildLiferay DXP主题 – WOMM

当我压缩完整的自定义文件夹并将其解压到另一个开发人员计算机(并在另一台计算机上设置环境variables和.npmrc)时,生成将不起作用。

错误消息(maven antrun exec gulp.cmd)是

 [exec] Error: Cannot find module '(project directory)\node_modules\gulp\bin\gulp.js' 

其中“(项目目录)”是我的DXP主题源文件夹,而不是上面提到的自定义安装文件夹。

其他命令在其他机器上显示没有问题,例如

 node -v npm -v npm cache ls 

 npm install -g yo gulp 

很快完成并显示没有错误。

更新

昨天的一个尝试就是打电话

 npm install -g yo gulp 

在另一台机器上,这应该是唯一的区别在于zipfile的内容。

电话

 npm list -g 

在另一台机器上显示这些差异

 1099a1100 > +-- is-installed-globally@0.1.0 extraneous 1222a1224,1226 > | +-- chalk@2.1.0 invalid > | | +-- ansi-styles@3.2.0 extraneous > | | `-- supports-color@4.4.0 extraneous 

无效的项是yo.update-notifier的子项

接下来尝试另一台机器

 npm uninstall -g yo npm cache clear npm install -g yo 

我和其他机器之间的新差异

 1211c1211 < +-- update-notifier@2.2.0 --- > +-- update-notifier@2.3.0 1222a1223,1225 > | +-- chalk@2.1.0 > | | +-- ansi-styles@3.2.0 > | | `-- supports-color@4.4.0 1223a1227,1230 > | +-- is-installed-globally@0.1.0 > | | +-- global-dirs@0.1.0 > | | `-- is-path-inside@1.0.0 > | | `-- path-is-inside@1.0.2 1257c1264 < | +-- diff@3.3.1 --- > | +-- diff@3.4.0 

但是在其他机器上的构build仍然会引发相同的错误。

你确定你在开发要求中喝了一杯吗?

试试 – npm install gulp --save-dev

自我回答,一些maven / antrun / jdk魔法 – 我应该把我的头撞在墙上多次。

当我开始testing我的同事的机器时,他提到“我在jdk6上,因为我正在开发这个和那个”

“没问题” ,我说, “这不是Java”

但是这问题。 切换到jdk8使build立工作在同事的机器上。

也许我应该已经testing了没有maven的命令行构build,只是在提示符上的“gulp build”,因为我猜,jdk问题与maven – > antrun / ant – > gulp有关,而不是节点和/或gulp本身(?)

记住使用jdk6时的错误:

 [exec] Error: Cannot find module '(project directory)\node_modules\gulp\bin\gulp.js' 

概要

可以设置一个包含全局节点安装的zip文件,并在其他机器上使用它,只是不要忘了

  • 使用没有老的Java
  • 设置环境variables和.npmrc内容以匹配您使用的目录

  • zip包含一个解压缩的节点安装(例如,nodejs的win64 zip)
  • zip包含节点包和节点caching
  • 解压到c:\ global-node
  • set NODE_PATH = c:\ global-node \ node-v6.11.4-win-x64; c:\ global-node \ npm-packages \ node_modules
  • 设置NPM_PACKAGES = c:\ global-node \ npm-packages
  • 使用“; c:\ global-node \ node-v6.11.4-win-x64; c:\ global-node \ npm-packages”来设置/
  • 你的〜/ .npmrc需要一个条目prefix = c:\ global-node \ npm-packages
  • 和一个入口caching= C:\全球节点\ NPMcaching

而且您已经完成了可重复使用的全局压缩节点安装。