找不到模块' ../ built / cli.js'在运行Protractor时

时间:2016-07-04 02:32:14

标签: javascript node.js testing protractor

由于present in Protractor 3.3.0 issue with getMultiCapabilities,我们必须直接从github安装Protractor,因为主分支包含the fix,它是为Protractor 3.4安排的。

package.json我们添加了以下内容:

"dependencies": {
  "protractor": "git+https://github.com/angular/protractor.git"
},

现在,我们在尝试运行protractor时收到以下错误:

> protractor conf.js

module.js:341
    throw err;
    ^

Error: Cannot find module '../built/cli.js'

我们做错了什么,或者Protractor开发版本无法以这种方式安装和使用?

2 个答案:

答案 0 :(得分:2)

npm上的包下载和git repo上的直接获取之间存在差异。

防止量角器运行的要点是:

//protractor from git repo, inside ./bin/protractor
require('../built/cli.js');

//protractor from npm, inside ./bin/protractor
require('../lib/cli.js');

所以基本上你需要转到protractor本地文件夹,然后执行gulp任务'prepublish'来设置protractor的环境。它将是这样的:

// from your project directory
cd node_modules/protractor
// install base dependencies for protractor
npm install
// setup environment by publishing
gulp prepublish

答案 1 :(得分:1)

据我所知,缺少一步。量角器在package.json中有preublish步骤,您可以手动调用它,或尝试执行与此步骤相同的操作:

Error: Cannot find module '../built/cli.js'

我在https://github.com/angular/protractor/blob/master/gulpfile.js#L76中看到的内容:

gulp.task('prepublish', function(done) {
  runSequence(['typings', 'jshint', 'format'], 'tsc', 'tsc:globals', 'types',
    'ambient', 'built:copy', done);
});

gulp.task('built:copy', function() {
  return gulp.src(['lib/**/*','!lib/**/*.ts'])
      .pipe(gulp.dest('built/'));
});

我认为您只需要执行postinstall任务,即将该文件复制到目标位置。