Typescript &引用;npm运行指令;不起作用
我可能是一个“npm numpty”,但我无法理解为什么我键入: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
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上提出了这个问题