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

时间:2017-10-12 15:04:41

标签: node.js gulp

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

13-10-2017 - 更新已添加,请参阅问题末尾,尚未解决

首先说明,问题稍后:

我们的团队使用准备好的开发环境,我希望使用liferay主题生成器添加构建Liferay dxp主题所需的节点组件。

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

我设置了环境变量并创建了.npmrc,前缀(npm-packages)和缓存(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

设置环境变量

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

包括路径

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

构建Liferay DXP主题可在我的计算机上运行 - WOMM

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

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

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

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

其他命令在其他计算机上显示 no 问题,例如

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

但是在另一台机器上的构建仍然会引发同样的错误。

2 个答案:

答案 0 :(得分:0)

您确定您已经了解了开发要求吗?

尝试 - npm install gulp --save-dev

答案 1 :(得分:0)

自我回答,一些maven / antrun / jdk魔法 - 我应该多次撞到墙上。

当我开始在同事的机器上进行测试时,他提到了&#34;我在jdk6上因为我正在开发这个&#34;

&#34;没问题&#34; ,我说,&#34;它不是java&#34;

但这 问题。切换到jdk8使得构建工作在同事的机器上。

也许我应该在没有maven的情况下测试命令行构建,只需&#34; gulp build&#34;在提示符上,因为我猜,jdk问题与maven有关 - &gt; antrun / ant - &gt; gulp而不是节点和/或gulp本身(?)

使用jdk6时记住错误:

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

<强>摘要

可以设置包含全局节点安装的zipfile并在其他计算机上使用它,不要忘记

  • 不使用旧的java
  • 设置环境变量和.npmrc内容以匹配您正在使用的目录

示例

  • zip包含解压缩的节点安装(例如来自nodejs的win64 zip)
  • zip包含node-packages和node-cache
  • 解压缩到c:\ global-node
  • 设置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
  • 使用&#34;; c:\ global-node \ node-v6.11.4-win-x64; c:\ global-node \ npm-packages&#34;
  • 设置/扩展路径
  • 你的〜/ .npmrc需要一个条目前缀= c:\ global-node \ npm-packages
  • 和条目缓存= c:\ global-node \ npm-cache

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