2017-08-25 48 views
1

我使用angular-cli生成了我的angular 2项目。 由于项目和客户的限制,我无法升级到角度4。angular-cli + mvn:无法启动构建

我尝试使用frontend-maven-plugin来编译我的角度应用与maven,但是当我启动mvn干净安装时,构建脚本失败。

我得到了错误:

[ERROR] ..pathToProject/node_modules/@ngtools/json-schema/src/schema-class-factory.js:34 [ERROR] result.push(...indices); [ERROR]
^^^ [ERROR] [ERROR] SyntaxError: Unexpected token ... [ERROR] at exports.runInThisContext (vm.js:53:16) [ERROR] at Module._compile (module.js:373:25) [ERROR] at Object.Module._extensions..js (module.js:416:10) [ERROR] at Module.load (module.js:343:32) [ERROR] at Function.Module._load (module.js:300:12) [ERROR] at Module.require (module.js:353:17) [ERROR] at require (internal/module.js:12:17) [ERROR] at Object. (..pathToProject/node_modules/@ngtools/json-schema/src/index.js:3:30) [ERROR] at Module._compile (module.js:409:26) [ERROR] at Object.Module._extensions..js (module.js:416:10) [ERROR] [ERROR] npm ERR! Linux 4.4.0-92-generic [ERROR] npm ERR! argv "..pathToProject/node/node" "..pathToProject/node/node_modules/npm/bin/npm-cli.js" "run-script" "build" [ERROR] npm ERR! node v4.6.0 [ERROR] npm ERR! npm v2.15.9 [ERROR] npm ERR! code ELIFECYCLE [ERROR] npm ERR! [email protected] build: ng build [ERROR] npm ERR! Exit status 1 [ERROR] npm ERR! [ERROR] npm ERR! Failed at the [email protected] build script 'ng build'. [ERROR] npm ERR! This is most likely a problem with the hsmt package, [ERROR] npm ERR! not with npm itself. [ERROR] npm ERR! Tell the author that this fails on your system: [ERROR] npm ERR! ng build [ERROR] npm ERR! You can get information on how to open an issue for this project with: [ERROR] npm ERR! npm bugs hsmt

我POM:

<build> 
    <plugins> 
    <plugin> 
    <groupId>com.github.eirslett</groupId> 
    <artifactId>frontend-maven-plugin</artifactId> 
    <version>1.5</version> 
    <executions> 
     <execution> 
     <id>install node and npm</id> 
     <goals> 
      <goal>install-node-and-npm</goal> 
     </goals> 
     <configuration> 
      <nodeVersion>v4.6.0</nodeVersion> 
      <npmVersion>v2.15.9</npmVersion> 
     </configuration> 
     </execution> 

     <execution> 
     <id>build</id> 
     <goals> 
      <goal>npm</goal> 
     </goals> 
     <configuration> 
      <arguments>run-script build</arguments> 
     </configuration> 
     <phase>generate-resources</phase> 
     </execution> 

    </executions> 
     </plugin> 
    </plugins> 
</build> 

我的package.json:

{ 
    "name": "hsmt", 
    "version": "0.0.0", 
    "license": "MIT", 
    "angular-cli": {}, 
    "scripts": { 
    "ng": "ng", 
    "start": "ng serve --proxy-config proxy.conf.json", 
    "build": "ng build", 
    "prod" : "ng build --prod", 
    "test": "ng test", 
    "pree2e": "webdriver-manager update --standalone false --gecko false", 
    "e2e": "protractor", 
    "prebuild": "npm install" 
    }, 
+1

' V4 .6.0':-o。目前的价格是6.11.2。检查您在maven之外使用的版本,并将其粘贴到您的pom.xml中。顺便说一句这个错误只出现在maven中? (我想是的) – n00dl3

+0

伟大的这是与节点v6.11.2 :)(这确实是我的电脑上安装的版本)我试图升级npm,但似乎它无法找到v3.10.10在https:/ /registry.npmjs.org/npm/你知道我应该使用哪个回购吗? – Lempkin

+0

我在我的maven项目中使用npm'3.8.6'节点为'6.11.0'我猜你可以同时使用节点'6.11.2'和npm'3.8.6' ... – n00dl3

回答

1

您使用的是旧版本的NodeJS和防范机制,你只需要切换到你在maven之外使用的版本。

在终端

运行以下命令:在我的电脑上

npm --version 
node --version 

,这些命令输出v6.11.2为的NodeJS和3.10.10为NPM所以pom.xml应该是这样的:

<nodeVersion>v6.11.2</nodeVersion> 
<npmVersion>3.10.10</npmVersion> 
0

其实你并不需要一个特定的前端插件任务。

如果在你的环境中你能够运行NPM运行构建比你可以使用exec-Maven的插件,像这样的东西:

<build> 
    <plugins> 
     <plugin> 
     <groupId>org.codehaus.mojo</groupId> 
     <artifactId>exec-maven-plugin</artifactId> 
     <executions> 
      <execution> 
      <id>install npm dependencies</id> 
      <phase>initialize</phase> 
      <goals> 
       <goal>exec</goal> 
      </goals> 
      <configuration> 
       <workingDirectory>${project.basedir}</workingDirectory> 
       <executable>npm</executable> 
       <commandlineArgs>install</commandlineArgs> 
      </configuration> 
      </execution> 
      <execution> 
      <id>build webapp</id> 
      <phase>compile</phase> 
      <goals> 
       <goal>exec</goal> 
      </goals> 
      <configuration> 
       <workingDirectory>${project.basedir}</workingDirectory> 
       <executable>npm</executable> 
       <commandlineArgs>run build</commandlineArgs> 
      </configuration> 
      </execution> 
     </executions> 
     </plugin> 
    </plugins> 
    </build> 
+0

这种方法的问题是可移植性,其他开发人员需要手动管理节点和npm版本。这是一个真正的痛苦,并可能导致不可预知的行为。前端插件非常棒,因为它为您管理节点版本。 – n00dl3

+0

如果你使用package-lock.json/npm-shrinkwrap.json,你不应该有版本问题。锁定的主要问题是软件包不是节点版本。但我明白你的观点。 – rick

相关问题