mirror of
				https://github.com/actions/setup-node.git
				synced 2025-11-04 13:29:12 +08:00 
			
		
		
		
	Fix node-version-file interprets entire package.json as a version (#865)
This commit is contained in:
		
							
								
								
									
										22
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								dist/cache-save/index.js
									
									
									
									
										vendored
									
									
								
							@@ -83338,9 +83338,25 @@ function parseNodeVersionFile(contents) {
 | 
			
		||||
    let nodeVersion;
 | 
			
		||||
    // Try parsing the file as an NPM `package.json` file.
 | 
			
		||||
    try {
 | 
			
		||||
        nodeVersion = (_a = JSON.parse(contents).volta) === null || _a === void 0 ? void 0 : _a.node;
 | 
			
		||||
        if (!nodeVersion)
 | 
			
		||||
            nodeVersion = (_b = JSON.parse(contents).engines) === null || _b === void 0 ? void 0 : _b.node;
 | 
			
		||||
        const manifest = JSON.parse(contents);
 | 
			
		||||
        // JSON can parse numbers, but that's handled later
 | 
			
		||||
        if (typeof manifest === 'object') {
 | 
			
		||||
            nodeVersion = (_a = manifest.volta) === null || _a === void 0 ? void 0 : _a.node;
 | 
			
		||||
            if (!nodeVersion)
 | 
			
		||||
                nodeVersion = (_b = manifest.engines) === null || _b === void 0 ? void 0 : _b.node;
 | 
			
		||||
            // if contents are an object, we parsed JSON
 | 
			
		||||
            // this can happen if node-version-file is a package.json
 | 
			
		||||
            // yet contains no volta.node or engines.node
 | 
			
		||||
            //
 | 
			
		||||
            // if node-version file is _not_ json, control flow
 | 
			
		||||
            // will not have reached these lines.
 | 
			
		||||
            //
 | 
			
		||||
            // And because we've reached here, we know the contents
 | 
			
		||||
            // *are* JSON, so no further string parsing makes sense.
 | 
			
		||||
            if (!nodeVersion) {
 | 
			
		||||
                return null;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    catch (_d) {
 | 
			
		||||
        core.info('Node version file is not JSON file');
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user