Answer a question

When working on a TypeScript (v2.0+) project within 'Visual Studio Code' (v1.5.3) I get the following error:

[Error - 10:03:50 AM] 'format' request failed with error.
Error processing request. No Project.
Error: No Project.
...

I restarted visual-studio-code with verbose logging.

export TSS_LOG='-level verbose -file <my-home>/tss.log'

This gives a bit more information:

Info 1233 request: {"seq":522,"type":"request","command":"format","arguments":{"file":"/<my_project>/src/ts/<the-file>.ts","line":1,"offset":1,"endLine":616,"endOffset":1}}

Err 1234  Exception on executing command {"seq":522,"type":"request","command":"format","arguments":{"file":"/<my_project>/src/ts/<the-file>.ts","line":1,"offset":1,"endLine":616,"endOffset":1}}:
No Project.
Error: No Project.
    at Errors (<my_global_node>/lib/node_modules/typescript/lib/tsserver.js:50793:32)
    at ts.server.ts.server (<my_global_node>/lib/node_modules/typescript/lib/tsserver.js:50795:11)
    at ts (<my_global_node>/lib/node_modules/typescript/lib/tsserver.js:51775:7)
    at Object.<anonymous> (<my_global_node>/lib/node_modules/typescript/lib/tsserver.js:51776:3)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)

Info 1235 response:        
{"seq":0,"type":"response","command":"format","request_seq":522,"success":false,"message":"Error processing request. No Project.
Error: No Project.
    at Errors (/home/fred/.nvm/versions/node/v6.5.0/lib/node_modules/typescript/lib/tsserver.js:50793:32)
    at ts.server.ts.server (/home/fred/.nvm/versions/node/v6.5.0/lib/node_modules/typescript/lib/tsserver.js:50795:11)
    at ts (/home/fred/.nvm/versions/node/v6.5.0/lib/node_modules/typescript/lib/tsserver.js:51775:7)
    at Object.<anonymous> (/home/fred/.nvm/versions/node/v6.5.0/lib/node_modules/typescript/lib/tsserver.js:51776:3)
    at Module._compile (module.js:413:34)
    at Object.Module._extensions..js (module.js:422:10)
    at Module.load (module.js:357:32)
    at Function.Module._load (module.js:314:12)
    at Module.require (module.js:367:17)
    at require (internal/module.js:16:19)"}

Does tsserver believe I do not have a project?

I have both a 'tsconfig.json' and 'jsconfig.json' file at the project directory root. I do have a 'tasks.json' that runs tsc. I can stimulate tsserver with other requests with a similar result.

Answers

As per the tsserver.js source code

$ export TSS_LOG='-level verbose -file <my-home>/tss.log'
$ code

The verbose log file holds the answer but not reported as an error.

Info 2    Config file name: /<my-project>/src/ts/jsconfig.json
Err 3     Exception on executing command {"seq":0,"type":"request","command":"open","arguments":{"file":"<my-project>/src/ts/<a-class-file>.ts","fileContent":"..."}}: Unexpected end of input
<stack-trace>

The problem was that there was an empty 'jsconfig.json' file near the top of the 'src' tree ('src/ts/jsconfig.json'). This caused the search for the project root much too low in the file hierarchy. Specifically, the 'tsconfig.json' file was not found resulting in a 'No Project' error.

The executeCommand() function returned undefined, which happens when the associated handler cannot find the project containing the file. The files are associated with the project via the 'files' or 'include' options in the 'tsconfig.json'. The 'tss.log' file should contain 'Info' messages about the files that are opened. Make sure all of the files you care about are opened, in particular check the locations of the 'Config file name' to make sure you are getting the correct files.

This problem did not surface with 'tsc' as it does not consider 'jsconfig.json' as an indicator for a project.

A typical log file should look more like this:

Info 0    request: {"seq":0,"type":"request","command":"open","arguments":{"file":"/<my-project>/src/ts/folder1/ClassA.ts","fileContent":"..."}}
Info 1    Search path: /<my-project>/src/ts/folder1
Info 2    Config file name: /<my-project>/tsconfig.json
Err 3     Add recursive watcher for: /<my-project>
Err 4     Add recursive watcher for: /<my-project>/src/ts
Info 5    Opened configuration file /<my-project>/tsconfig.json
Info 6    Project (configured) 0
/<node-root>/lib/node_modules/typescript/lib/lib.es6.d.ts
/<my-project>/node_modules/@types/bluebird/index.d.ts
...a list of all the project files...

-----------------------------------------------
Open file roots of inferred projects:
Open files referenced by inferred or configured projects:
Open file roots of configured projects:
/<my-project>/src/ts/folder1/ClassA.ts
Perf 7    Async elapsed time (in milliseconds): 1060.9415
...
Logo

开发云社区提供前沿行业资讯和优质的学习知识,同时提供优质稳定、价格优惠的云主机、数据库、网络、云储存等云服务产品

更多推荐