Typescript &引用;npm运行指令;不起作用

Typescript &引用;npm运行指令;不起作用,typescript,npm,tslint,Typescript,Npm,Tslint,我可能是一个“npm numpty”,但我无法理解为什么我键入: tslint --force --format verbose \"src/**/*.ts\" npm run lint 它工作正常,但当我键入: tslint --force --format verbose \"src/**/*.ts\" npm run lint 其中我的package.json包括: "scripts": { "clean": "rimraf lib", "lint": "tsl

我可能是一个“npm numpty”,但我无法理解为什么我键入:

tslint --force --format verbose \"src/**/*.ts\"
npm run lint
它工作正常,但当我键入:

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.\u解析文件名(Module.js:469:15) 在Function.Module.\u加载(Module.js:417:25) at Module.require(Module.js:497:17) 根据需要(内部/module.js:20:19) 反对。(/Volumes/PEGASUS/repos/mine/logger/serverless event/node_modules/tslint/lib/test.js:10:13) 在模块处编译(Module.js:570:32) 在Object.Module.\u extensions..js(Module.js:579:10) 在Module.load(Module.js:487:32) 在tryModuleLoad时(module.js:446:12) 在Function.Module.\u加载(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"
当然,这个精确的命令不会失败,这就是我面临的全部问题


值得注意的是,我确实看到了类似的问题-- 但是讨论的解决方案对我得到的错误没有影响



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

混淆可能是因为npm脚本添加到您的路径中,包括./node\u modules/.bin。这意味着当您在package.json中使用
tslint
时,您引用的是
node_modules
中本地安装的版本,而当您直接使用
tslint
时,您使用的是全局安装的版本。似乎只有全球安装的版本在工作

您可以通过在命令行上显式指定路径来确认这一点,即运行
/node\u modules/.bin/tslint--force--format verbose\“src/***.ts\”
。它直接使用node_modules版本,应该会给您带来与NPM脚本相同的失败结果

但这并不能解决你潜在的问题。听起来您本地安装的tslint无法找到它使用的文件,尽管我不知道为什么。除非有明显的原因,否则我认为最快的解决方案可能是删除您的
node\u modules
文件夹,然后再次
npm install
,以下载新的工作版本


新安装的tslint及其所有依赖项应该能够成功加载其所有依赖项,您不应该看到这些问题。如果不能,那么您可能有一个bug要用tslint归档。

混淆可能是因为npm脚本添加到您的路径中,包括./node\u modules/.bin。这意味着当您在package.json中使用
tslint
时,您引用的是
node_modules
中本地安装的版本,而当您直接使用
tslint
时,您使用的是全局安装的版本。似乎只有全球安装的版本在工作

您可以通过在命令行上显式指定路径来确认这一点,即运行
/node\u modules/.bin/tslint--force--format verbose\“src/***.ts\”
。它直接使用node_modules版本,应该会给您带来与NPM脚本相同的失败结果

但这并不能解决你潜在的问题。听起来您本地安装的tslint无法找到它使用的文件,尽管我不知道为什么。除非有明显的原因,否则我认为最快的解决方案可能是删除您的
node\u modules
文件夹,然后再次
npm install
,以下载新的工作版本


新安装的tslint及其所有依赖项应该能够成功加载其所有依赖项,您不应该看到这些问题。如果不能,那么您可能有一个bug需要用tslint归档。

我已经删除了“node_modules”并重建了所有内容,并且使用本地安装运行命令失败,全局安装正常。它们都是最新版本的。非常奇怪。不管怎样,我认为你的答案可能是正确的,但我留下的感觉是另一个问题。你的本地安装与全局安装的tslint版本相同吗?这很容易导致不同的行为(尽管两者都应该仍然有效)。您的错误表明存在
node\u modules/tslint/lib/test.js
,并尝试加载
node\u modules/tslint/lib/test/parse.js
,但该错误不存在。知道为什么会这样吗?对我来说,在本地快速安装时,两者都在那里,而且看起来都很开心。我在github上提出了这个问题,但有趣的是,您确实有
lib/test/parse.js
文件。我不在本地或全局安装中安装。我正在使用版本
4.0.1
。这就是你用的吗?我用的是4.0.2。如果我将4.0.1安装在一个新文件夹中(
mkdir/tmp/test;cd/tmp/test;npm installtslint@4.0.1
)然后/tmp/test/node_modules/tslint/lib/test/parse.js立即存在。在您的安装过程中发生了一些非常奇怪的事情。。。也许和你的NPM版本有关?不过,我认为Github bug是正确的选择。祝你好运我已经删除了“node_modules”并重建了所有内容,实际上,使用本地安装运行命令失败,全局安装正常。它们都是最新版本的。非常奇怪。不管怎样,我认为你的答案可能是正确的,但我留下的感觉是另一个问题。你的本地安装与全局安装的tslint版本相同吗?这很容易导致不同的行为(尽管两者都应该仍然有效)。您的错误表明存在
node\u modules/tslint/lib/test.js
,并尝试加载
node\u modules/tslint/lib/test/parse.js
,但该错误不存在。知道为什么会这样吗?对我来说,在本地快速安装时,这两个都在那里,而且看起来很开心。我在github上提出了这个问题