" npm运行CMD"不工作

时间:2016-11-22 09:34:35

标签: typescript npm tslint

我可能是一个&n; npm numpty"但是当我输入时我无法弄清楚为什么:

tslint --force --format verbose \"src/**/*.ts\"

它工作正常,但是当我输入时:

npm run lint

我的package.json包含:

  "scripts": {
    "clean": "rimraf lib",
    "lint": "tslint --force --format verbose \"src/**/*.ts\"",
    "build": "npm run clean && npm run lint && echo Using TypeScript && tsc --version && tsc --pretty",
    "test": "npm run build && mocha --compilers ts:ts-node/register --recursive test/**/*-spec.ts",
    "watch": "npm run build -- --watch",
    "watch:test": "npm run test -- --watch"
  },

我收到以下错误:

  

module.js:471       扔错了;       ^

     

错误:无法找到模块' ./ test / parse'       在Function.Module._resolveFilename(module.js:469:15)       在Function.Module._load(module.js:417:25)       在Module.require(module.js:497:17)       at require(internal / module.js:20:19)       在对象。 (/Volumes/PEGASUS/repos/mine/logger/serverless-event/node_modules/tslint/lib/test.js:10:13)       在Module._compile(module.js:570:32)       在Object.Module._extensions..js(module.js:579:10)       在Module.load(module.js:487:32)       在tryModuleLoad(module.js:446:12)       在Function.Module._load(module.js:438:3)

我还查看了npm-debug.log文件,其中包括:

23 error Tell the author that this fails on your system:
23 error     tslint --force --format verbose "src/**/*.ts"

当然,精确的命令不会失败,这是我所拥有的整个问题。

值得注意的是,我确实看到了类似的声音问题 - npm run cmd fails while cmd on command line works - 但是讨论的解决方案对我得到的错误没有任何影响。

另外值得注意的是,我目前没有任何linting错误,警告或任何我期望它返回错误状态的内容。

1 个答案:

答案 0 :(得分:2)

混淆可能是因为npm脚本添加到您的PATH,包括./node_modules/.bin。这意味着当您在package.json中使用DbInterception.Add(new TemporalTableCommandTreeInterceptor()); 时,您在tslint中引用了本地安装的版本,并且当您直接使用node_modules时,您正在使用全球安装的版本。似乎只有全局安装的版本正在运行。

您可以通过在命令行中明确指定路径来确认,即运行tslint。这直接使用了node_modules版本,并且应该为您提供与NPM脚本相同的失败结果。

但这并不能解决你的根本问题。听起来你的本地安装的tslint无法找到它使用的文件,虽然我不知道为什么。除非有明显的原因,否则我认为最快的解决方案可能只是删除您的./node_modules/.bin/tslint --force --format verbose \"src/**/*.ts\"文件夹和node_modules,以便下载新的工作版本。

全新安装的tslint及其所有依赖项应该能够成功加载其所有依赖项,并且您不应该看到这些问题。如果它不能,那么你可能有一个用tslint提交的错误。