自定义捆绑节点安装在其他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
而且您已经完成了可重复使用的全局压缩节点安装。